parent
afcea7ad52
commit
4f52c57848
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="core" />
|
||||
<module name="api" />
|
||||
<module name="server" />
|
||||
<module name="hub" />
|
||||
<module name="practice" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel>
|
||||
<module name="api" target="1.8" />
|
||||
<module name="core" target="1.8" />
|
||||
<module name="hub" target="1.5" />
|
||||
<module name="ivory" target="1.8" />
|
||||
<module name="ivory-api" target="1.8" />
|
||||
<module name="ivory-parent" target="1.5" />
|
||||
<module name="pparent" target="1.5" />
|
||||
<module name="practice" target="1.5" />
|
||||
<module name="server" target="1.8" />
|
||||
<module name="toothless" target="1.5" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with NO BOM">
|
||||
<file url="file://$PROJECT_DIR$/core" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/hub" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/ivory" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/ivory/Ivory-API" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/ivory/Ivory-Server" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/practice" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/toothless/api" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/toothless/server" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.code.gson:gson:2.2.4">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.google.guava:guava:17.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/guava/17.0/guava-17.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.googlecode.json-simple:json-simple:1.1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.moshi:moshi:1.5.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/moshi/moshi/1.5.0/moshi-1.5.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/moshi/moshi/1.5.0/moshi-1.5.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/moshi/moshi/1.5.0/moshi-1.5.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.okhttp3:logging-interceptor:3.13.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/logging-interceptor/3.13.1/logging-interceptor-3.13.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/logging-interceptor/3.13.1/logging-interceptor-3.13.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/logging-interceptor/3.13.1/logging-interceptor-3.13.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.okhttp3:okhttp:3.13.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.13.1/okhttp-3.13.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.13.1/okhttp-3.13.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/3.13.1/okhttp-3.13.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.okio:okio:1.17.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.17.2/okio-1.17.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.17.2/okio-1.17.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/okio/okio/1.17.2/okio-1.17.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.retrofit2:converter-moshi:2.5.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/converter-moshi/2.5.0/converter-moshi-2.5.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/converter-moshi/2.5.0/converter-moshi-2.5.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/converter-moshi/2.5.0/converter-moshi-2.5.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: com.squareup.retrofit2:retrofit:2.5.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/retrofit/2.5.0/retrofit-2.5.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/retrofit/2.5.0/retrofit-2.5.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/com/squareup/retrofit2/retrofit/2.5.0/retrofit-2.5.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: commons-lang:commons-lang:2.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: javax.persistence:persistence-api:1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: jline:jline:2.12">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/jline/jline/2.12/jline-2.12.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/jline/jline/2.12/jline-2.12-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/jline/jline/2.12/jline-2.12-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: junit:junit:4.10">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.10/junit-4.10-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: junit:junit:4.11">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.11/junit-4.11-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: junit:junit:4.12">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.12/junit-4.12-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: me.lucko.luckperms:luckperms-api:4.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/me/lucko/luckperms/luckperms-api/4.3/luckperms-api-4.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/me/lucko/luckperms/luckperms-api/4.3/luckperms-api-4.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/me/lucko/luckperms/luckperms-api/4.3/luckperms-api-4.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: mysql:mysql-connector-java:5.1.14">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.14/mysql-connector-java-5.1.14.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.14/mysql-connector-java-5.1.14-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.14/mysql-connector-java-5.1.14-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.jafama:jafama:2.1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/jafama/jafama/2.1.0/jafama-2.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/jafama/jafama/2.1.0/jafama-2.1.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/jafama/jafama/2.1.0/jafama-2.1.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.md-5:bungeecord-chat:1.8-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-SNAPSHOT-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.sf.jopt-simple:jopt-simple:3.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jopt-simple/jopt-simple/3.2/jopt-simple-3.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jopt-simple/jopt-simple/3.2/jopt-simple-3.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/jopt-simple/jopt-simple/3.2/jopt-simple-3.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: net.sf.trove4j:trove4j:3.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.commons:commons-lang3:3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.apache.commons:commons-pool2:2.4.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.4.3/commons-pool2-2.4.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.4.3/commons-pool2-2.4.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/commons/commons-pool2/2.4.3/commons-pool2-2.4.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.avaje:ebean:2.8.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/avaje/ebean/2.8.1/ebean-2.8.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.hamcrest:hamcrest-core:1.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.hamcrest:hamcrest-core:1.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.hamcrest:hamcrest-library:1.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.influxdb:influxdb-java:2.15">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/influxdb/influxdb-java/2.15/influxdb-java-2.15.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/influxdb/influxdb-java/2.15/influxdb-java-2.15-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/influxdb/influxdb-java/2.15/influxdb-java-2.15-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mongodb:bson:3.10.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.10.0/bson-3.10.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.10.0/bson-3.10.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/bson/3.10.0/bson-3.10.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mongodb:mongodb-driver-core:3.10.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.10.0/mongodb-driver-core-3.10.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.10.0/mongodb-driver-core-3.10.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-core/3.10.0/mongodb-driver-core-3.10.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.mongodb:mongodb-driver-sync:3.10.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-sync/3.10.0/mongodb-driver-sync-3.10.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-sync/3.10.0/mongodb-driver-sync-3.10.0-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/mongodb/mongodb-driver-sync/3.10.0/mongodb-driver-sync-3.10.0-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.msgpack:msgpack-core:0.8.16">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/msgpack/msgpack-core/0.8.16/msgpack-core-0.8.16.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/msgpack/msgpack-core/0.8.16/msgpack-core-0.8.16-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/msgpack/msgpack-core/0.8.16/msgpack-core-0.8.16-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.projectlombok:lombok:1.18.4">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.4/lombok-1.18.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.4/lombok-1.18.4-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.4/lombok-1.18.4-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.slf4j:slf4j-api:1.7.22">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.22/slf4j-api-1.7.22.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.22/slf4j-api-1.7.22-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.22/slf4j-api-1.7.22-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.spigotmc:minecraft-server:1.8.8-SNAPSHOT">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/minecraft-server/1.8.8-SNAPSHOT/minecraft-server-1.8.8-SNAPSHOT.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/minecraft-server/1.8.8-SNAPSHOT/minecraft-server-1.8.8-SNAPSHOT-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/minecraft-server/1.8.8-SNAPSHOT/minecraft-server-1.8.8-SNAPSHOT-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.xerial:sqlite-jdbc:3.7.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/sqlite-jdbc/3.7.2/sqlite-jdbc-3.7.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/sqlite-jdbc/3.7.2/sqlite-jdbc-3.7.2-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/xerial/sqlite-jdbc/3.7.2/sqlite-jdbc-3.7.2-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: org.yaml:snakeyaml:1.15">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.15/snakeyaml-1.15-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.15/snakeyaml-1.15-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,13 @@
|
|||
<component name="libraryTable">
|
||||
<library name="Maven: redis.clients:jedis:3.0.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/3.0.1/jedis-3.0.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/3.0.1/jedis-3.0.1-javadoc.jar!/" />
|
||||
</JAVADOC>
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/redis/clients/jedis/3.0.1/jedis-3.0.1-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</component>
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="ignoredFiles">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$/ivory/pom.xml" />
|
||||
</set>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/classes" />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/toothless/api/api.iml" filepath="$PROJECT_DIR$/toothless/api/api.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/core/core.iml" filepath="$PROJECT_DIR$/core/core.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/hub/hub.iml" filepath="$PROJECT_DIR$/hub/hub.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/pparent.iml" filepath="$PROJECT_DIR$/pparent.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/practice/practice.iml" filepath="$PROJECT_DIR$/practice/practice.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/toothless/server/server.iml" filepath="$PROJECT_DIR$/toothless/server/server.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/toothless/toothless.iml" filepath="$PROJECT_DIR$/toothless/toothless.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,824 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="29242455-cd44-407f-a2b3-7a1145c9506c" name="Default Changelist" comment="" />
|
||||
<ignored path="$PROJECT_DIR$/pHub/target/" />
|
||||
<ignored path="$PROJECT_DIR$/pcore/target/" />
|
||||
<ignored path="$PROJECT_DIR$/target/" />
|
||||
<ignored path="$PROJECT_DIR$/ivory/Ivory-API/target/" />
|
||||
<ignored path="$PROJECT_DIR$/ppractice/target/" />
|
||||
<ignored path="$PROJECT_DIR$/ivory/target/" />
|
||||
<ignored path="$PROJECT_DIR$/ivory/Ivory-Server/target/" />
|
||||
<ignored path="$PROJECT_DIR$/practice/target/" />
|
||||
<ignored path="$PROJECT_DIR$/hub/target/" />
|
||||
<ignored path="$PROJECT_DIR$/toothless/target/" />
|
||||
<ignored path="$PROJECT_DIR$/toothless/api/target/" />
|
||||
<ignored path="$PROJECT_DIR$/toothless/server/target/" />
|
||||
<ignored path="$PROJECT_DIR$/core/target/" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/resources/config.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="306">
|
||||
<caret line="18" column="29" selection-start-line="18" selection-start-column="29" selection-end-line="18" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/resources/plugin.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="4" selection-start-line="4" selection-end-line="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="25" column="21" selection-start-line="25" selection-start-column="21" selection-end-line="25" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/toothless/api/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/hub/src/main/java/cc/patrone/hub/Hub.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="10" column="19" selection-start-line="10" selection-start-column="19" selection-end-line="10" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/toothless/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/toothless/server/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="238">
|
||||
<caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/GameModeCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="9" column="41" selection-start-line="9" selection-start-column="41" selection-end-line="9" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/BroadcastCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="13" column="42" selection-start-line="13" selection-start-column="42" selection-end-line="13" selection-end-column="42" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/FreezeCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="35" column="124" selection-start-line="35" selection-start-column="124" selection-end-line="35" selection-end-column="124" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>ping</find>
|
||||
<find>Potion</find>
|
||||
<find>vel</find>
|
||||
<find>patrone</find>
|
||||
<find>apache</find>
|
||||
<find>chatForm</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>C:\Users\ps-de\git\pparent\ppractice</dir>
|
||||
<dir>C:\Users\ps-de\git\pparent\core\src\main\java\zone\potion</dir>
|
||||
</dirStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/resources/plugin.yml" />
|
||||
<option value="$PROJECT_DIR$/toothless/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/utils/message/CC.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/utils/structure/Cuboid.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/utils/player/PlayerUtil.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/resources/config.yml" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/task/BroadcastTask.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/task/AFKTask.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/storage/database/MongoStorage.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/server/ServerSettings.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/redis/RedisMessenger.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/managers/PlayerManager.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/managers/ProfileManager.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/player/CoreProfile.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/managers/StaffManager.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/PlayerListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/MessageListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/InventoryListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/HelpCommandListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/DispatchCommandListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/ChatListener.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/BaseCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/PlayerCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ReportCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ReplyCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/PingCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/MessageCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/IgnoreCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/HelpOpCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/DispatchCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ClearChatCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleSoundsCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleMessagesCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleGlobalChat.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleCrossChat.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/VanishCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/TeleportCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/StaffChatCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/SlowChatCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/task/ShutdownTask.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/ShutdownCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/ReloadKBCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/GameModeCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/BroadcastCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/PunishType.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/FreezeCommand.java" />
|
||||
<option value="$PROJECT_DIR$/core/src/main/java/zone/potion/CorePlugin.java" />
|
||||
<option value="$PROJECT_DIR$/core/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/toothless/server/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/toothless/api/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="MavenImportPreferences">
|
||||
<option name="importingSettings">
|
||||
<MavenImportingSettings>
|
||||
<option name="importAutomatically" value="true" />
|
||||
</MavenImportingSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="MavenProjectNavigator">
|
||||
<treeState>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="api" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="api" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
<item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="core" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="core" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
<item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="pPractice" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="pPractice" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
<item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="toothless" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="" type="16c1761:MavenProjectsStructure$RootNode" />
|
||||
<item name="toothless" type="9519ce18:MavenProjectsStructure$ProjectNode" />
|
||||
<item name="Lifecycle" type="58874e2:MavenProjectsStructure$LifecycleNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</treeState>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="-8" />
|
||||
<option name="y" value="-8" />
|
||||
<option name="width" value="1936" />
|
||||
<option name="height" value="1056" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||
<component name="ProjectView">
|
||||
<navigator proportions="" version="1">
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="core" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="hub" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="resources" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="practice" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="toothless" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="toothless" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="api" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="toothless" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="api" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="target" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="toothless" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="server" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="pparent" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="pparent" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="toothless" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="server" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="target" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
|
||||
<property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1555777590419" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="RunDashboard">
|
||||
<option name="ruleStates">
|
||||
<list>
|
||||
<RuleState>
|
||||
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
<RuleState>
|
||||
<option name="name" value="StatusDashboardGroupingRule" />
|
||||
</RuleState>
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="29242455-cd44-407f-a2b3-7a1145c9506c" name="Default Changelist" comment="" />
|
||||
<created>1553551552136</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1553551552136</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
||||
<layout>
|
||||
<window_info id="Designer" order="0" />
|
||||
<window_info id="UI Designer" order="1" />
|
||||
<window_info id="Capture Tool" order="2" />
|
||||
<window_info id="Favorites" order="3" side_tool="true" />
|
||||
<window_info id="Image Layers" order="4" />
|
||||
<window_info active="true" content_ui="combo" id="Project" order="5" visible="true" weight="0.31556502" />
|
||||
<window_info id="Structure" order="6" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Terminal" order="0" visible="true" weight="0.2936078" />
|
||||
<window_info anchor="bottom" id="Event Log" order="1" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Version Control" order="2" />
|
||||
<window_info anchor="bottom" id="Message" order="3" />
|
||||
<window_info anchor="bottom" id="Find" order="4" weight="0.32936078" />
|
||||
<window_info anchor="bottom" id="Run" order="5" />
|
||||
<window_info anchor="bottom" id="Debug" order="6" weight="0.4" />
|
||||
<window_info anchor="bottom" id="Cvs" order="7" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="8" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="9" />
|
||||
<window_info anchor="right" id="Theme Preview" order="0" />
|
||||
<window_info anchor="right" id="Capture Analysis" order="1" />
|
||||
<window_info anchor="right" id="Palette	" order="2" />
|
||||
<window_info anchor="right" id="Maven" order="3" visible="true" weight="0.32995737" />
|
||||
<window_info anchor="right" id="Palette" order="4" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="5" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="6" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="7" weight="0.25" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="antWorkspaceConfiguration">
|
||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/ChatListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="27" column="22" lean-forward="true" selection-start-line="27" selection-start-column="22" selection-end-line="27" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/DispatchCommandListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="289">
|
||||
<caret line="25" column="84" lean-forward="true" selection-start-line="25" selection-start-column="84" selection-end-line="25" selection-end-column="84" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/FreezeListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="10" column="13" selection-start-line="10" selection-start-column="13" selection-end-line="10" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/event/BanEvent.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="13" column="13" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/event/server/ServerShutdownScheduleEvent.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/event/server/ServerShutdownCancelEvent.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="5" column="13" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/callback/WebCallback.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="34">
|
||||
<caret line="2" column="17" selection-start-line="2" selection-start-column="17" selection-end-line="2" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/callback/DocumentCallback.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="4" column="17" selection-start-line="4" selection-start-column="17" selection-end-line="4" selection-end-column="17" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/BaseCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="434">
|
||||
<caret line="61" selection-start-line="61" selection-end-line="61" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/PlayerCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="153">
|
||||
<caret line="12" column="33" selection-start-line="12" selection-start-column="33" selection-end-line="12" selection-end-column="33" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ReplyCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="383">
|
||||
<caret line="39" column="72" selection-start-line="39" selection-start-column="72" selection-end-line="39" selection-end-column="72" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ReportCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="221">
|
||||
<caret line="57" column="19" selection-start-line="57" selection-start-column="19" selection-end-line="57" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/PingCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="17" column="31" lean-forward="true" selection-start-line="17" selection-start-column="31" selection-end-line="17" selection-end-column="31" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ListCommand.java" />
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/MessageCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="408">
|
||||
<caret line="46" column="19" lean-forward="true" selection-start-line="46" selection-start-column="19" selection-end-line="46" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/IgnoreCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="21" column="30" lean-forward="true" selection-start-line="21" selection-start-column="30" selection-end-line="21" selection-end-column="30" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/HelpOpCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="315">
|
||||
<caret line="37" column="57" lean-forward="true" selection-start-line="37" selection-start-column="57" selection-end-line="37" selection-end-column="57" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/DispatchCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="6" column="40" selection-start-line="6" selection-start-column="40" selection-end-line="6" selection-end-column="40" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/ClearChatCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="391">
|
||||
<caret line="26" column="17" selection-start-line="26" selection-start-column="17" selection-end-line="26" selection-end-column="17" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleSoundsCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="221">
|
||||
<caret line="17" column="13" lean-forward="true" selection-start-line="17" selection-start-column="13" selection-end-line="17" selection-end-column="13" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleMessagesCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="19" column="76" lean-forward="true" selection-start-line="19" selection-start-column="76" selection-end-line="19" selection-end-column="76" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleGlobalChat.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="19" column="74" selection-start-line="19" selection-start-column="74" selection-end-line="19" selection-end-column="74" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/toggle/ToggleCrossChat.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="238">
|
||||
<caret line="18" column="55" lean-forward="true" selection-start-line="18" selection-start-column="55" selection-end-line="18" selection-end-column="55" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/VanishCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="374">
|
||||
<caret line="22" lean-forward="true" selection-start-line="22" selection-end-line="22" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/TeleportCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="85">
|
||||
<caret line="5" column="38" selection-start-line="5" selection-start-column="38" selection-end-line="5" selection-end-column="38" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/StaffJoinListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="187">
|
||||
<caret line="16" column="39" selection-start-line="16" selection-start-column="39" selection-end-line="16" selection-end-column="39" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/managers/PlayerManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="77">
|
||||
<caret line="22" column="5" selection-start-line="22" selection-start-column="5" selection-end-line="22" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/managers/ProfileManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="391">
|
||||
<caret line="32" column="5" selection-start-line="32" selection-start-column="5" selection-end-line="32" selection-end-column="5" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/managers/StaffManager.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="99">
|
||||
<caret line="47" column="16" selection-start-line="47" selection-start-column="16" selection-end-line="47" selection-end-column="16" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/player/CoreProfile.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="644">
|
||||
<caret line="178" column="5" selection-start-line="178" selection-start-column="5" selection-end-line="178" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#3904#3905#0" expanded="true" />
|
||||
<element signature="e#3942#3943#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/listeners/redis/StaffChatListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="272">
|
||||
<caret line="21" column="36" selection-start-line="21" selection-start-column="36" selection-end-line="21" selection-end-column="36" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/StaffChatCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="315">
|
||||
<caret line="46" column="95" lean-forward="true" selection-start-line="46" selection-start-column="95" selection-end-line="46" selection-end-column="95" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/SlowChatCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="52" column="20" lean-forward="true" selection-start-line="52" selection-start-column="20" selection-end-line="52" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/task/ShutdownTask.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="196">
|
||||
<caret line="17" column="47" selection-start-line="17" selection-start-column="47" selection-end-line="17" selection-end-column="47" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/ShutdownCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="52" column="70" selection-start-line="52" selection-start-column="70" selection-end-line="52" selection-end-column="70" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/RankCommand.java" />
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/MuteChatCommand.java" />
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/ReloadKBCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="15" column="5" selection-start-line="15" selection-start-column="5" selection-end-line="15" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/PunishCommand.java" />
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/PunishType.java" />
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/CorePlugin.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="476">
|
||||
<caret line="67" column="72" selection-start-line="67" selection-start-column="72" selection-end-line="67" selection-end-column="72" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/resources/config.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="306">
|
||||
<caret line="18" column="29" selection-start-line="18" selection-start-column="29" selection-end-line="18" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/resources/plugin.yml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="4" selection-start-line="4" selection-end-line="4" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="25" column="21" selection-start-line="25" selection-start-column="21" selection-end-line="25" selection-end-column="21" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/toothless/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor" />
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/toothless/server/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="238">
|
||||
<caret line="14" column="37" selection-start-line="14" selection-start-column="37" selection-end-line="14" selection-end-column="37" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/GameModeCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="102">
|
||||
<caret line="9" column="41" selection-start-line="9" selection-start-column="41" selection-end-line="9" selection-end-column="41" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/BroadcastCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="136">
|
||||
<caret line="13" column="42" selection-start-line="13" selection-start-column="42" selection-end-line="13" selection-end-column="42" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/core/src/main/java/zone/potion/commands/impl/staff/punish/FreezeCommand.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="425">
|
||||
<caret line="35" column="124" selection-start-line="35" selection-start-column="124" selection-end-line="35" selection-end-column="124" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/toothless/api/pom.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="19" column="57" selection-start-line="19" selection-start-column="57" selection-end-line="19" selection-end-column="57" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/hub/src/main/java/cc/patrone/hub/Hub.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="68">
|
||||
<caret line="10" column="19" selection-start-line="10" selection-start-column="19" selection-end-line="10" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ProjectJDKs.UI">
|
||||
<settings>
|
||||
<last-edited>1.8</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ScopeChooserConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
|
@ -0,0 +1,3 @@
|
|||
# pCore
|
||||
|
||||
Core plugin for Patrone.
|
|
@ -0,0 +1,56 @@
|
|||
<?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 />
|
||||
</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" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/../pcore/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="server" />
|
||||
<orderEntry type="library" name="Maven: net.sf.trove4j:trove4j:3.0.3" level="project" />
|
||||
<orderEntry type="module" module-name="api" />
|
||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: junit:junit:4.10" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.guava:guava:17.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.avaje:ebean:2.8.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.md-5:bungeecord-chat:1.8-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.spigotmc:minecraft-server:1.8.8-SNAPSHOT" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.sf.jopt-simple:jopt-simple:3.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: jline:jline:2.12" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.xerial:sqlite-jdbc:3.7.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.1.14" level="project" />
|
||||
<orderEntry type="library" name="Maven: net.jafama:jafama:2.1.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.9" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-sync:3.10.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:bson:3.10.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.mongodb:mongodb-driver-core:3.10.0" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.4" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.influxdb:influxdb-java:2.15" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.retrofit2:retrofit:2.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.retrofit2:converter-moshi:2.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.moshi:moshi:1.5.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.msgpack:msgpack-core:0.8.16" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
|
||||
<orderEntry type="library" name="Maven: com.squareup.okhttp3:logging-interceptor:3.13.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: redis.clients:jedis:3.0.1" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.22" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.3" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Maven: me.lucko.luckperms:luckperms-api:4.3" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -0,0 +1,105 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>zone.potion</groupId>
|
||||
<artifactId>parent</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>core</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<name>core</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>zone.potion</groupId>
|
||||
<artifactId>server</artifactId>
|
||||
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mongodb</groupId>
|
||||
<artifactId>mongodb-driver-sync</artifactId>
|
||||
<version>3.10.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>1.18.4</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.influxdb</groupId>
|
||||
<artifactId>influxdb-java</artifactId>
|
||||
<version>2.15</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
|
||||
<dependency>
|
||||
<groupId>redis.clients</groupId>
|
||||
<artifactId>jedis</artifactId>
|
||||
<version>3.0.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>me.lucko.luckperms</groupId>
|
||||
<artifactId>luckperms-api</artifactId>
|
||||
<version>4.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<defaultGoal>clean package</defaultGoal>
|
||||
<finalName>${project.name}</finalName>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.0</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.1</version>
|
||||
<configuration>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
<shadedArtifactAttached>false</shadedArtifactAttached>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,191 @@
|
|||
package zone.potion;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import lombok.Getter;
|
||||
import me.lucko.luckperms.api.LuckPermsApi;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandMap;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerialization;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.commands.impl.*;
|
||||
import zone.potion.commands.impl.staff.*;
|
||||
import zone.potion.commands.impl.staff.punish.*;
|
||||
import zone.potion.commands.impl.toggle.ToggleCrossChat;
|
||||
import zone.potion.commands.impl.toggle.ToggleGlobalChat;
|
||||
import zone.potion.commands.impl.toggle.ToggleMessagesCommand;
|
||||
import zone.potion.commands.impl.toggle.ToggleSoundsCommand;
|
||||
import zone.potion.listeners.HelpCommandListener;
|
||||
import zone.potion.listeners.InventoryListener;
|
||||
import zone.potion.listeners.MessageListener;
|
||||
import zone.potion.listeners.PlayerListener;
|
||||
import zone.potion.listeners.redis.*;
|
||||
import zone.potion.managers.MenuManager;
|
||||
import zone.potion.managers.PlayerManager;
|
||||
import zone.potion.managers.ProfileManager;
|
||||
import zone.potion.managers.StaffManager;
|
||||
import zone.potion.redis.RedisMessenger;
|
||||
import zone.potion.server.ServerSettings;
|
||||
import zone.potion.server.filter.Filter;
|
||||
import zone.potion.storage.database.MongoStorage;
|
||||
import zone.potion.task.AFKTask;
|
||||
import zone.potion.task.BroadcastTask;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.structure.Cuboid;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Arrays;
|
||||
|
||||
@Getter
|
||||
public class CorePlugin extends JavaPlugin {
|
||||
public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
|
||||
@Getter
|
||||
private static CorePlugin instance;
|
||||
@Getter
|
||||
private static boolean isServerEnabled = false;
|
||||
private ServerSettings serverSettings;
|
||||
private Filter filter;
|
||||
private MongoStorage mongoStorage;
|
||||
|
||||
private ProfileManager profileManager;
|
||||
private StaffManager staffManager;
|
||||
private PlayerManager playerManager;
|
||||
private MenuManager menuManager;
|
||||
private RedisMessenger redisMessenger;
|
||||
|
||||
private BroadcastTask broadcastTask;
|
||||
|
||||
private LuckPermsApi luckPermsApi;
|
||||
|
||||
|
||||
private static void registerSerializableClass(Class<?> clazz) {
|
||||
if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
|
||||
Class<? extends ConfigurationSerializable> serializable = clazz.asSubclass(ConfigurationSerializable.class);
|
||||
ConfigurationSerialization.registerClass(serializable);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
|
||||
instance = this;
|
||||
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||
saveDefaultConfig();
|
||||
|
||||
registerSerializableClass(Cuboid.class);
|
||||
|
||||
RegisteredServiceProvider<LuckPermsApi> provider = Bukkit.getServicesManager().getRegistration(LuckPermsApi.class);
|
||||
if (provider != null) {
|
||||
LuckPermsApi api = provider.getProvider();
|
||||
|
||||
this.luckPermsApi = api;
|
||||
}
|
||||
|
||||
serverSettings = new ServerSettings(this);
|
||||
filter = new Filter();
|
||||
|
||||
redisMessenger = new RedisMessenger(
|
||||
this,
|
||||
getConfig().getString("redis.host"),
|
||||
getConfig().getInt("redis.port"),
|
||||
getConfig().getInt("redis.timeout"),
|
||||
getConfig().getString("redis.password")
|
||||
);
|
||||
|
||||
redisMessenger.registerListeners(
|
||||
new StaffChatListener(this),
|
||||
new StaffJoinListener(this),
|
||||
new ChatListener(this),
|
||||
new HelpopListener(this),
|
||||
new ReportListener(this),
|
||||
new DispatchCommandListener(this),
|
||||
new FreezeListener(this)
|
||||
);
|
||||
|
||||
redisMessenger.initialize();
|
||||
|
||||
mongoStorage = new MongoStorage();
|
||||
|
||||
profileManager = new ProfileManager();
|
||||
staffManager = new StaffManager(this);
|
||||
playerManager = new PlayerManager();
|
||||
menuManager = new MenuManager(this);
|
||||
|
||||
registerCommands(
|
||||
new BroadcastCommand(this),
|
||||
new ClearChatCommand(this),
|
||||
new IgnoreCommand(this),
|
||||
new MessageCommand(this),
|
||||
new ReloadKBCommand(this),
|
||||
new ReplyCommand(this),
|
||||
new StaffChatCommand(this),
|
||||
new TeleportCommand(this),
|
||||
new ToggleMessagesCommand(this),
|
||||
new ToggleGlobalChat(this),
|
||||
new ToggleSoundsCommand(this),
|
||||
new ToggleCrossChat(this),
|
||||
new VanishCommand(this),
|
||||
new ReportCommand(this),
|
||||
new HelpOpCommand(this),
|
||||
new PingCommand(),
|
||||
new SlowChatCommand(this),
|
||||
new GameModeCommand(),
|
||||
new DispatchCommand(this),
|
||||
new FreezeCommand(this),
|
||||
new ShutdownCommand(this)
|
||||
);
|
||||
registerListeners(
|
||||
new PlayerListener(this),
|
||||
new MessageListener(this),
|
||||
new InventoryListener(this),
|
||||
new HelpCommandListener(this)
|
||||
);
|
||||
|
||||
|
||||
int broadcastTime = getConfig().getInt("broadcasts.delay");
|
||||
if (getConfig().getBoolean("broadcasts.enabled")) {
|
||||
this.broadcastTask = new BroadcastTask(this);
|
||||
broadcastTask.runTaskTimerAsynchronously(this, broadcastTime * 20L, broadcastTime * 20L);
|
||||
}
|
||||
|
||||
getServer().getScheduler().runTaskTimer(this, new AFKTask(this), 0, 20 * 60);
|
||||
getServer().getScheduler().runTaskLater(this, () -> isServerEnabled = true, 20L);
|
||||
|
||||
}
|
||||
|
||||
public String getServerName() {
|
||||
return getConfig().getString("server-name");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
profileManager.saveProfiles();
|
||||
serverSettings.saveConfig();
|
||||
|
||||
for (Player player : getServer().getOnlinePlayers()) {
|
||||
player.kickPlayer(CC.RED + "The server is restarting.");
|
||||
}
|
||||
}
|
||||
|
||||
private void registerCommands(BaseCommand... commands) {
|
||||
try {
|
||||
final Field bukkitCommandMap = getServer().getClass().getDeclaredField("commandMap");
|
||||
|
||||
bukkitCommandMap.setAccessible(true);
|
||||
CommandMap commandMap = (CommandMap) bukkitCommandMap.get(getServer());
|
||||
|
||||
Arrays.stream(commands).forEach(command -> {
|
||||
commandMap.register(getName(), command);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package zone.potion.callback;
|
||||
|
||||
import org.bson.Document;
|
||||
|
||||
public interface DocumentCallback {
|
||||
void call(Document document, boolean found);
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
package zone.potion.callback;
|
||||
|
||||
public interface WebCallback {
|
||||
void callback(String response);
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package zone.potion.commands;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public abstract class BaseCommand extends Command {
|
||||
private static final String LINE_SEPARATOR = System.lineSeparator();
|
||||
private final String permission;
|
||||
|
||||
protected BaseCommand(String name, String permission) {
|
||||
super(name);
|
||||
this.permission = permission;
|
||||
}
|
||||
|
||||
protected BaseCommand(String name) {
|
||||
this(name, "spike.player");
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean execute(CommandSender sender, String alias, String[] args) {
|
||||
if (sender instanceof Player) {
|
||||
Player player = (Player) sender;
|
||||
|
||||
if(!player.hasPermission(permission)){
|
||||
player.sendMessage(CC.color("&cYou do not have sufficient permissions to do this."));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
execute(sender, args);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected final void setAliases(String... aliases) {
|
||||
if (aliases.length > 0) {
|
||||
setAliases(aliases.length == 1 ? Collections.singletonList(aliases[0]) : Arrays.asList(aliases));
|
||||
}
|
||||
}
|
||||
|
||||
protected final void setUsage(String... uses) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
for (int i = 0; i < uses.length; i++) {
|
||||
String use = uses[i];
|
||||
|
||||
builder.append(use);
|
||||
|
||||
if (i + 1 != uses.length) {
|
||||
builder.append(LINE_SEPARATOR);
|
||||
}
|
||||
}
|
||||
|
||||
setUsage(builder.toString());
|
||||
}
|
||||
|
||||
protected abstract void execute(CommandSender sender, String[] args);
|
||||
|
||||
public String getUsageMessage(){
|
||||
return CC.color("&cInvalid usage: " + getUsage());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package zone.potion.commands;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public abstract class PlayerCommand extends BaseCommand {
|
||||
protected PlayerCommand(String name, String permission) {
|
||||
super(name, permission);
|
||||
}
|
||||
|
||||
protected PlayerCommand(String name) {
|
||||
super(name, "spike.player");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final void execute(CommandSender sender, String[] args) {
|
||||
if (sender instanceof Player) {
|
||||
execute((Player) sender, args);
|
||||
} else {
|
||||
sender.sendMessage(CC.RED + "Only players can perform this command.");
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void execute(Player player, String[] args);
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
public class ClearChatCommand extends BaseCommand {
|
||||
private static final String BLANK_MESSAGE = String.join("", Collections.nCopies(150, "§8 §8 §1 §3 §3 §7 §8 §r\n"));
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ClearChatCommand(CorePlugin plugin) {
|
||||
super("clearchat", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
setAliases("cc");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
for (Player player : plugin.getServer().getOnlinePlayers()) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
if (!profile.hasStaff()) {
|
||||
player.sendMessage(BLANK_MESSAGE);
|
||||
}
|
||||
}
|
||||
|
||||
plugin.getServer().broadcastMessage(CC.GREEN + "The chat was cleared by " + sender.getName() + ".");
|
||||
sender.sendMessage(CC.YELLOW + "Don't worry, staff can still see cleared messages.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.utils.StringUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
public class DispatchCommand extends BaseCommand {
|
||||
|
||||
private CorePlugin plugin;
|
||||
|
||||
public DispatchCommand(CorePlugin plugin) {
|
||||
super("dispatch", "spike.super");
|
||||
setUsage("/dispatch <dispatched command>");
|
||||
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(getUsage());
|
||||
return;
|
||||
}
|
||||
String dispatchedCommand = StringUtil.buildString(args, 0);
|
||||
Map<String, Object> map = Maps.newHashMap();
|
||||
map.put("server", plugin.getServerName());
|
||||
map.put("command", dispatchedCommand);
|
||||
map.put("sender", sender.getName());
|
||||
|
||||
plugin.getRedisMessenger().send("dispatch-command", map);
|
||||
sender.sendMessage(ChatColor.RED + "Command dispatched.");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.timer.Timer;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class HelpOpCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public HelpOpCommand(CorePlugin plugin) {
|
||||
super("helpop");
|
||||
this.plugin = plugin;
|
||||
setUsage(CC.RED + "/helpop <help message>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 1) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
Timer cooldownTimer = profile.getReportCooldownTimer();
|
||||
|
||||
if (cooldownTimer.isActive()) {
|
||||
player.sendMessage(CC.RED + "You can't request assistance for another " + cooldownTimer.formattedExpiration() + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
String request = StringUtil.buildString(args, 0);
|
||||
|
||||
Map<String, Object> requestMap = Maps.newHashMap();
|
||||
requestMap.put("server", plugin.getServerName());
|
||||
requestMap.put("player", player.getName());
|
||||
requestMap.put("request", request);
|
||||
|
||||
plugin.getRedisMessenger().send("help-op", requestMap);
|
||||
player.sendMessage(CC.GREEN + "Request sent: " + CC.R + request);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
|
||||
public class IgnoreCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public IgnoreCommand(CorePlugin plugin) {
|
||||
super("ignore");
|
||||
this.plugin = plugin;
|
||||
setAliases("unignore");
|
||||
setUsage(CC.RED + "Usage: /ignore <player>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 1) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
Player target = plugin.getServer().getPlayer(args[0]);
|
||||
|
||||
if (target == null) {
|
||||
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||
return;
|
||||
}
|
||||
|
||||
if (target.getName().equals(player.getName())) {
|
||||
player.sendMessage(CC.RED + "You can't ignore yourself!");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target);
|
||||
|
||||
if (targetProfile.hasStaff()) {
|
||||
player.sendMessage(CC.RED + "You can't ignore a staff member. If this staff member is harrassing you " +
|
||||
"or engaging in other abusive manners, please report this or contact a higher staff member.");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
if (profile.hasPlayerIgnored(target.getUniqueId())) {
|
||||
profile.unignore(target.getUniqueId());
|
||||
player.sendMessage(CC.GREEN + "No longer ignoring " + target.getName() + ".");
|
||||
} else {
|
||||
profile.ignore(target.getUniqueId());
|
||||
player.sendMessage(CC.GREEN + "Now ignoring " + target.getName() + ".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.event.player.PlayerMessageEvent;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
|
||||
public class MessageCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public MessageCommand(CorePlugin plugin) {
|
||||
super("message");
|
||||
this.plugin = plugin;
|
||||
setAliases("msg", "m", "whisper", "w", "tell", "t");
|
||||
setUsage(CC.RED + "Usage: /message <player> <message>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
Player target = plugin.getServer().getPlayer(args[0]);
|
||||
|
||||
if (target == null) {
|
||||
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||
return;
|
||||
}
|
||||
|
||||
if (target.isRecording()) {
|
||||
player.sendMessage(CC.RED + "That player is in recording mode and can't see your messages!");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target);
|
||||
|
||||
if (targetProfile.hasPlayerIgnored(player.getUniqueId())) {
|
||||
player.sendMessage(CC.RED + "That player is ignoring you!");
|
||||
return;
|
||||
}
|
||||
|
||||
plugin.getServer().getPluginManager().callEvent(new PlayerMessageEvent(player, target, StringUtil.buildString(args, 1)));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class PingCommand extends PlayerCommand {
|
||||
public PingCommand() {
|
||||
super("ping");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
Player target = args.length < 1 || Bukkit.getPlayer(args[0]) == null ? player : Bukkit.getPlayer(args[0]);
|
||||
int targetPing = target.spigot().getPing();
|
||||
|
||||
if (target == player) {
|
||||
player.sendMessage(CC.PRIMARY + "Your ping is " + CC.SECONDARY + targetPing + CC.PRIMARY + " ms.");
|
||||
} else {
|
||||
int difference = targetPing - player.spigot().getPing();
|
||||
String name = target.getDisplayName();
|
||||
|
||||
player.sendMessage(name + CC.PRIMARY + "'s ping is " + CC.SECONDARY + targetPing + CC.PRIMARY + " ms "
|
||||
+ CC.ACCENT + "(" + (difference > 0 ? "+" : "") + difference + " difference)" + CC.PRIMARY + ".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.event.player.PlayerMessageEvent;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ReplyCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ReplyCommand(CorePlugin plugin) {
|
||||
super("reply");
|
||||
this.plugin = plugin;
|
||||
setAliases("r");
|
||||
setUsage(CC.RED + "Usage: /reply <message>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 1) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
Player target = plugin.getServer().getPlayer(profile.getConverser());
|
||||
|
||||
if (target == null) {
|
||||
player.sendMessage(CC.RED + "You are not in a conversation.");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target);
|
||||
|
||||
if (targetProfile.hasPlayerIgnored(player.getUniqueId())) {
|
||||
player.sendMessage(CC.RED + "That player is ignoring you!");
|
||||
return;
|
||||
}
|
||||
|
||||
plugin.getServer().getPluginManager().callEvent(new PlayerMessageEvent(player, target, StringUtil.buildString(args, 0)));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package zone.potion.commands.impl;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.inventory.menu.impl.ReportMenu;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
import zone.potion.utils.timer.Timer;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class ReportCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ReportCommand(CorePlugin plugin) {
|
||||
super("report");
|
||||
this.plugin = plugin;
|
||||
setUsage(CC.RED + "Usage: /report <player> <reason>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 2) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
Player target = plugin.getServer().getPlayer(args[0]);
|
||||
|
||||
if (target == null) {
|
||||
player.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||
return;
|
||||
}
|
||||
|
||||
if (player == target) {
|
||||
player.sendMessage(CC.RED + "You can't report yourself!");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target);
|
||||
|
||||
if (targetProfile.hasStaff()) {
|
||||
player.sendMessage(CC.RED + "You can't report a staff member. If this staff member is harassing you or" +
|
||||
" engaging in other abusive manners, please report this or contact a higher staff member.");
|
||||
return;
|
||||
}
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
Timer cooldownTimer = profile.getReportCooldownTimer();
|
||||
|
||||
if (cooldownTimer.isActive()) {
|
||||
player.sendMessage(CC.RED + "You can't report a player for another " + cooldownTimer.formattedExpiration() + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
String report = StringUtil.buildString(args, 1);
|
||||
|
||||
|
||||
Map<String, Object> reportInformation = Maps.newHashMap();
|
||||
reportInformation.put("server", plugin.getServerName());
|
||||
reportInformation.put("reporter", player.getName());
|
||||
reportInformation.put("reported", target.getName());
|
||||
reportInformation.put("reason", report);
|
||||
plugin.getRedisMessenger().send("report", reportInformation);
|
||||
|
||||
player.sendMessage(CC.GREEN + "Report sent for " + target.getDisplayName() + CC.GREEN + ": " + CC.R + report);
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class BroadcastCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public BroadcastCommand(CorePlugin plugin) {
|
||||
super("broadcast", "spike.admin");
|
||||
this.plugin = plugin;
|
||||
setAliases("bc");
|
||||
setUsage(CC.RED + "Usage: /broadcast <message> [-god]");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
String message = CC.D_RED + "[Alert] " + CC.WHITE
|
||||
+ ChatColor.translateAlternateColorCodes('&', StringUtil.buildString(args, 0)).trim();
|
||||
|
||||
if (message.endsWith(" -god")) {
|
||||
message = message.substring(12, message.length() - 5).trim();
|
||||
}
|
||||
|
||||
plugin.getServer().broadcastMessage(message);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class GameModeCommand extends PlayerCommand {
|
||||
public GameModeCommand() {
|
||||
super("gamemode", "spike.admin");
|
||||
setAliases("gm");
|
||||
setUsage(CC.RED + "Usage: /gamemode <mode|id>");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 1) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (args[0].toLowerCase()) {
|
||||
case "1":
|
||||
case "creative":
|
||||
case "c":
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
player.sendMessage(CC.GREEN + "Your game mode was set to creative.");
|
||||
break;
|
||||
case "0":
|
||||
case "survival":
|
||||
case "s":
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
player.sendMessage(CC.GREEN + "Your game mode was set to survival.");
|
||||
break;
|
||||
case "2":
|
||||
case "adventure":
|
||||
case "a":
|
||||
player.setGameMode(GameMode.ADVENTURE);
|
||||
player.sendMessage(CC.GREEN + "Your game mode was set to adventure.");
|
||||
break;
|
||||
default:
|
||||
player.sendMessage(usageMessage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.toothless.ToothlessConfig;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ReloadKBCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ReloadKBCommand(CorePlugin plugin) {
|
||||
super("reloadkb", "spike.super");
|
||||
this.plugin = plugin;
|
||||
setUsage(CC.RED + "Usage: /reloadkb");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
ToothlessConfig.reload();
|
||||
sender.sendMessage(CC.GREEN + "Reloaded knockback settings!");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.event.server.ServerShutdownCancelEvent;
|
||||
import zone.potion.event.server.ServerShutdownScheduleEvent;
|
||||
import zone.potion.task.ShutdownTask;
|
||||
import zone.potion.utils.NumberUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ShutdownCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ShutdownCommand(CorePlugin plugin) {
|
||||
super("shutdown", "spike.super");
|
||||
this.plugin = plugin;
|
||||
setUsage(CC.RED + "Usage: /shutdown <seconds|cancel>");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
String arg = args[0];
|
||||
|
||||
if (arg.equals("cancel")) {
|
||||
ShutdownTask task = plugin.getServerSettings().getShutdownTask();
|
||||
|
||||
if (task == null) {
|
||||
sender.sendMessage(CC.RED + "There is no shutdown in progress.");
|
||||
} else {
|
||||
plugin.getServer().getPluginManager().callEvent(new ServerShutdownCancelEvent());
|
||||
|
||||
task.cancel();
|
||||
plugin.getServerSettings().setShutdownTask(null);
|
||||
plugin.getServer().broadcastMessage(CC.GREEN + "The shutdown in progress has been cancelled by " + sender.getName() + ".");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Integer seconds = NumberUtil.getInteger(arg);
|
||||
|
||||
if (seconds == null) {
|
||||
sender.sendMessage(usageMessage);
|
||||
} else {
|
||||
if (seconds >= 5 && seconds <= 300) {
|
||||
plugin.getServer().getPluginManager().callEvent(new ServerShutdownScheduleEvent());
|
||||
|
||||
ShutdownTask task = new ShutdownTask(plugin, seconds);
|
||||
|
||||
plugin.getServerSettings().setShutdownTask(task);
|
||||
task.runTaskTimer(plugin, 0L, 20L);
|
||||
} else {
|
||||
sender.sendMessage(CC.RED + "Please enter a time between 5 and 300 seconds.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class SlowChatCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public SlowChatCommand(CorePlugin plugin) {
|
||||
super("slowchat", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
setUsage(CC.RED + "Usage: /slowchat <seconds|disable>");
|
||||
}
|
||||
|
||||
private static Integer getInt(String arg) {
|
||||
try {
|
||||
int i = Integer.parseInt(arg);
|
||||
|
||||
if (i < 4 || i > 60) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return i;
|
||||
} catch (NumberFormatException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
String arg = args[0];
|
||||
|
||||
switch (arg.toLowerCase()) {
|
||||
case "off":
|
||||
case "toggle":
|
||||
case "disable":
|
||||
int slowChatTime = plugin.getServerSettings().getSlowChatTime();
|
||||
|
||||
if (slowChatTime == -1) {
|
||||
sender.sendMessage(CC.RED + "Slow chat is already disabled!");
|
||||
} else {
|
||||
plugin.getServerSettings().setSlowChatTime(-1);
|
||||
plugin.getServer().broadcastMessage(CC.RED + "Slow chat has been disabled by " + sender.getName() + ".");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Integer time = getInt(arg);
|
||||
|
||||
if (time == null) {
|
||||
sender.sendMessage(CC.RED + "You must enter a valid time between 4 and 60 seconds.");
|
||||
} else {
|
||||
plugin.getServerSettings().setSlowChatTime(time);
|
||||
plugin.getServer().broadcastMessage(CC.YELLOW + "Slow chat has been enabled and set to " + time
|
||||
+ " seconds by " + sender.getName() + ".");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.StringUtil;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class StaffChatCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public StaffChatCommand(CorePlugin plugin) {
|
||||
super("staffchat", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
setAliases("sc");
|
||||
setUsage("/staffchat [message]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
|
||||
if (args.length == 0) {
|
||||
if (sender instanceof Player) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(((Player) sender));
|
||||
boolean inStaffChat = !profile.isInStaffChat();
|
||||
|
||||
profile.setInStaffChat(inStaffChat);
|
||||
|
||||
sender.sendMessage(inStaffChat ? CC.GREEN + "You are now in staff chat." : CC.RED + "You are no longer in staff chat.");
|
||||
return;
|
||||
}
|
||||
sender.sendMessage(CC.RED + getUsage());
|
||||
return;
|
||||
} else {
|
||||
String message = StringUtil.buildString(args, 0);
|
||||
|
||||
Map<String, Object> redisMessage = Maps.newHashMap();
|
||||
redisMessage.put("message", message);
|
||||
redisMessage.put("sender", sender.getName());
|
||||
|
||||
if (sender instanceof Player) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(((Player) sender));
|
||||
redisMessage.put("format", profile.getPrimaryGroupPrefix() + sender.getName());
|
||||
}
|
||||
|
||||
redisMessage.put("server", plugin.getServerName());
|
||||
|
||||
plugin.getRedisMessenger().send("staff-chat", redisMessage);
|
||||
//plugin.getStaffManager().messageStaff(profile.getChatFormat(), message, plugin.getServerName());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
|
||||
public class TeleportCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public TeleportCommand(CorePlugin plugin) {
|
||||
super("tp", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
setAliases("teleport");
|
||||
setUsage(CC.RED + "Usage: /teleport <player> [player]");
|
||||
}
|
||||
|
||||
private static boolean isOffline(Player checker, Player target) {
|
||||
if (target == null) {
|
||||
checker.sendMessage(Messages.PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void teleport(Player to, Player from) {
|
||||
to.teleport(from);
|
||||
to.sendMessage(CC.GREEN + "You have been teleported to " + from.getName() + ".");
|
||||
|
||||
CoreProfile fromProfile = plugin.getProfileManager().getProfile(from);
|
||||
|
||||
if (fromProfile.hasStaff()) {
|
||||
from.sendMessage(CC.GREEN + to.getName() + " has been teleported to you.");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
if (args.length < 1) {
|
||||
player.sendMessage(usageMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
Player target = plugin.getServer().getPlayer(args[0]);
|
||||
|
||||
if (isOffline(player, target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
teleport(player, target);
|
||||
} else {
|
||||
Player target2 = plugin.getServer().getPlayer(args[1]);
|
||||
|
||||
if (isOffline(player, target2)) {
|
||||
return;
|
||||
}
|
||||
|
||||
teleport(target, target2);
|
||||
|
||||
player.sendMessage(CC.GREEN + "Teleported " + target.getName() + " to " + target2.getName() + ".");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package zone.potion.commands.impl.staff;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class VanishCommand extends BaseCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public VanishCommand(CorePlugin plugin) {
|
||||
super("vanish", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
Player player = (Player) sender;
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
boolean vanished = !profile.isVanished();
|
||||
|
||||
profile.setVanished(vanished);
|
||||
|
||||
for (Player online : plugin.getServer().getOnlinePlayers()) {
|
||||
plugin.getStaffManager().hideVanishedStaffFromPlayer(online);
|
||||
}
|
||||
|
||||
player.sendMessage(vanished ? CC.GREEN + "Poof, you vanished." : CC.RED + "You're visible again.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package zone.potion.commands.impl.staff.punish;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.BaseCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class FreezeCommand extends BaseCommand {
|
||||
|
||||
private CorePlugin plugin;
|
||||
|
||||
public FreezeCommand(CorePlugin plugin) {
|
||||
super("freeze", "spike.staff");
|
||||
this.plugin = plugin;
|
||||
setUsage("/freeze <player>");
|
||||
setAliases("ice", "frz");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void execute(CommandSender sender, String[] args) {
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(CC.RED + getUsage());
|
||||
return;
|
||||
}
|
||||
Player target = Bukkit.getPlayer(args[0]);
|
||||
if (target != null) {
|
||||
CoreProfile targetProfile = plugin.getProfileManager().getProfile(target);
|
||||
if (targetProfile.hasStaff()) {
|
||||
sender.sendMessage(ChatColor.RED + "If you believe a staff member is cheating, please alert higher staff.");
|
||||
return;
|
||||
}
|
||||
String server = plugin.getServerName();
|
||||
String targetName = target.getName();
|
||||
String senderName = sender.getName();
|
||||
|
||||
Map<String, Object> map = Maps.newHashMap();
|
||||
map.put("server", server);
|
||||
map.put("frozen", targetName);
|
||||
map.put("sender", senderName);
|
||||
|
||||
if (targetProfile.freeze(sender)) {
|
||||
map.put("isFrozen", true);
|
||||
plugin.getRedisMessenger().send("freeze-listener", map);
|
||||
return;
|
||||
}
|
||||
map.put("isFrozen", false);
|
||||
plugin.getRedisMessenger().send("freeze-listener", map);
|
||||
return;
|
||||
}
|
||||
sender.sendMessage(CC.RED + "That player is offline or does not exist.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package zone.potion.commands.impl.toggle;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ToggleCrossChat extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ToggleCrossChat(CorePlugin plugin) {
|
||||
super("togglecrosschat");
|
||||
this.plugin = plugin;
|
||||
setAliases("tcchat", "tcc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
boolean enabled = !profile.isCrossChat();
|
||||
|
||||
profile.setCrossChat(enabled);
|
||||
player.sendMessage(enabled ? CC.GREEN + "Cross chat enabled." : CC.RED + "Cross chat disabled.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package zone.potion.commands.impl.toggle;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ToggleGlobalChat extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ToggleGlobalChat(CorePlugin plugin) {
|
||||
super("toggleglobalchat");
|
||||
this.plugin = plugin;
|
||||
setAliases("togglechat", "tgc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
boolean enabled = !profile.isGlobalChatEnabled();
|
||||
|
||||
profile.setGlobalChatEnabled(enabled);
|
||||
player.sendMessage(enabled ? CC.GREEN + "Global chat enabled." : CC.RED + "Global chat disabled.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package zone.potion.commands.impl.toggle;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ToggleMessagesCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ToggleMessagesCommand(CorePlugin plugin) {
|
||||
super("togglemessages");
|
||||
this.plugin = plugin;
|
||||
setAliases("tpm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
boolean messaging = !profile.isMessaging();
|
||||
|
||||
profile.setMessaging(messaging);
|
||||
player.sendMessage(messaging ? CC.GREEN + "Messages enabled." : CC.RED + "Messages disabled.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package zone.potion.commands.impl.toggle;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.commands.PlayerCommand;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
public class ToggleSoundsCommand extends PlayerCommand {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ToggleSoundsCommand(CorePlugin plugin) {
|
||||
super("togglesounds");
|
||||
this.plugin = plugin;
|
||||
setAliases("sounds", "ts");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(Player player, String[] args) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
boolean playingSounds = !profile.isPlayingSounds();
|
||||
|
||||
profile.setPlayingSounds(playingSounds);
|
||||
player.sendMessage(playingSounds ? CC.GREEN + "Sounds enabled." : CC.RED + "Sounds disabled.");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package zone.potion.event;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public class BanEvent extends Event implements Cancellable {
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
private final CommandSender punisher;
|
||||
private final UUID punishedId;
|
||||
private boolean cancelled;
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean cancelled) {
|
||||
this.cancelled = cancelled;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package zone.potion.event.player;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.player.PlayerEvent;
|
||||
|
||||
@Getter
|
||||
public class PlayerMessageEvent extends PlayerEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Player receiver;
|
||||
private final String message;
|
||||
|
||||
public PlayerMessageEvent(Player sender, Player receiver, String message) {
|
||||
super(sender);
|
||||
this.receiver = receiver;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLERS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLERS;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package zone.potion.event.server;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.server.ServerEvent;
|
||||
|
||||
public class ServerShutdownCancelEvent extends ServerEvent {
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package zone.potion.event.server;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.server.ServerEvent;
|
||||
|
||||
public class ServerShutdownScheduleEvent extends ServerEvent {
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package zone.potion.inventory.menu;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import zone.potion.inventory.menu.action.Action;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class Menu {
|
||||
@Getter
|
||||
private final Inventory inventory;
|
||||
private final Map<Integer, Action> actions = new HashMap<>();
|
||||
private final List<Menu> pages = new ArrayList<>();
|
||||
|
||||
protected Menu(int rows, String name) {
|
||||
inventory = Bukkit.createInventory(null, 9 * rows, name);
|
||||
}
|
||||
|
||||
protected void setItem(int slot, ItemStack item) {
|
||||
inventory.setItem(slot, item);
|
||||
}
|
||||
|
||||
protected void setActionableItem(int slot, ItemStack item, Action action) {
|
||||
inventory.setItem(slot, item);
|
||||
actions.put(slot, action);
|
||||
}
|
||||
|
||||
protected ItemStack getItem(int slot) {
|
||||
return inventory.getItem(slot);
|
||||
}
|
||||
|
||||
public Action getAction(int slot) {
|
||||
return actions.get(slot);
|
||||
}
|
||||
|
||||
public void open(Player player) {
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
public void addPage(Menu page) {
|
||||
pages.add(page);
|
||||
}
|
||||
|
||||
public Menu getPage(int index) {
|
||||
return pages.get(index);
|
||||
}
|
||||
|
||||
protected void clear() {
|
||||
actions.clear();
|
||||
pages.clear();
|
||||
inventory.clear();
|
||||
}
|
||||
|
||||
public abstract void setup();
|
||||
|
||||
public abstract void update();
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package zone.potion.inventory.menu.action;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface Action {
|
||||
void onClick(Player player);
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package zone.potion.inventory.menu.impl;
|
||||
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.inventory.menu.Menu;
|
||||
|
||||
public abstract class PerPlayerMenu extends Menu {
|
||||
protected PerPlayerMenu(int rows, String name) {
|
||||
super(rows, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void update() {
|
||||
for (HumanEntity entity : getInventory().getViewers()) {
|
||||
Player player = (Player) entity;
|
||||
updatePlayer(player);
|
||||
player.updateInventory();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void open(Player player) {
|
||||
super.open(player);
|
||||
updatePlayer(player);
|
||||
}
|
||||
|
||||
public abstract void updatePlayer(Player player);
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package zone.potion.inventory.menu.impl;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.inventory.menu.Menu;
|
||||
import zone.potion.inventory.menu.action.Action;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.item.ItemBuilder;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.timer.Timer;
|
||||
|
||||
public class ReportMenu extends Menu {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public ReportMenu(CorePlugin plugin) {
|
||||
super(1, "Select a Report Reason");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
private Action getAction(String reason) {
|
||||
return player -> {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player.getUniqueId());
|
||||
Timer cooldownTimer = profile.getReportCooldownTimer();
|
||||
|
||||
if (cooldownTimer.isActive()) {
|
||||
player.sendMessage(CC.RED + "You can't report a player for another " + cooldownTimer.formattedExpiration() + ".");
|
||||
player.closeInventory();
|
||||
return;
|
||||
}
|
||||
|
||||
String targetName = profile.getReportingPlayerName();
|
||||
|
||||
plugin.getStaffManager().messageStaff("");
|
||||
plugin.getStaffManager().messageStaff(CC.RED + "(Report) " + CC.SECONDARY + player.getName() + CC.PRIMARY
|
||||
+ " reported " + CC.SECONDARY + targetName + CC.PRIMARY + " for " + CC.SECONDARY + reason + CC.PRIMARY + ".");
|
||||
plugin.getStaffManager().messageStaff("");
|
||||
|
||||
player.sendMessage(CC.GREEN + "Report sent for " + targetName + CC.GREEN + ": " + CC.R + reason);
|
||||
player.closeInventory();
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
setActionableItem(1, new ItemBuilder(Material.DIAMOND_SWORD).name(CC.PRIMARY + "Combat Cheats").build(), getAction("Combat Cheats"));
|
||||
setActionableItem(3, new ItemBuilder(Material.DIAMOND_BOOTS).name(CC.PRIMARY + "Movement Cheats").build(), getAction("Movement Cheats"));
|
||||
setActionableItem(5, new ItemBuilder(Material.PAPER).name(CC.PRIMARY + "Chat Violation").build(), getAction("Chat Violation"));
|
||||
setActionableItem(7, new ItemBuilder(Material.NETHER_STAR).name(CC.PRIMARY + "Assistance").build(), getAction("I need assistance related to this player"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package zone.potion.listeners;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class HelpCommandListener implements Listener {
|
||||
|
||||
/**
|
||||
* Commands we don't want players to be able to run(and or, display the help message for).
|
||||
*/
|
||||
private static final String[] DISALLOWED_COMMANDS = {
|
||||
"?",
|
||||
"help",
|
||||
"version",
|
||||
"ver",
|
||||
"icanhasbukkit"
|
||||
};
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@EventHandler
|
||||
public void onHelpCommand(PlayerCommandPreprocessEvent event) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(event.getPlayer());
|
||||
boolean staff = profile.hasStaff();
|
||||
for (String command : DISALLOWED_COMMANDS) {
|
||||
if (event.getMessage().startsWith("/" + command) && !staff) {
|
||||
event.getPlayer().sendMessage(CC.RED + "If you need help, require assistance by using /helpop.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package zone.potion.listeners;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryCloseEvent;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.inventory.menu.Menu;
|
||||
import zone.potion.inventory.menu.action.Action;
|
||||
import zone.potion.player.CoreProfile;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class InventoryListener implements Listener {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@EventHandler
|
||||
public void onClick(InventoryClickEvent event) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
|
||||
if (player.getGameMode() != GameMode.SURVIVAL || event.getClickedInventory() == null
|
||||
|| event.getClickedInventory() == player.getInventory() || event.getCurrentItem() == null
|
||||
|| event.getCurrentItem().getType() == Material.AIR) {
|
||||
return;
|
||||
}
|
||||
|
||||
Menu menu = plugin.getMenuManager().getMatchingMenu(event.getClickedInventory());
|
||||
|
||||
if (menu != null) {
|
||||
Action action = menu.getAction(event.getSlot());
|
||||
|
||||
if (action != null) {
|
||||
event.setCancelled(true);
|
||||
action.onClick(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onClose(InventoryCloseEvent event) {
|
||||
Player player = (Player) event.getPlayer();
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
if (profile != null && profile.getReportingPlayerName() != null) {
|
||||
profile.setReportingPlayerName(null);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package zone.potion.listeners;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.event.player.PlayerMessageEvent;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class MessageListener implements Listener {
|
||||
private final CorePlugin plugin;
|
||||
|
||||
private static void sendMessage(CoreProfile sender, CoreProfile receiver, Player player, String msg) {
|
||||
receiver.setConverser(sender.getId());
|
||||
player.sendMessage(msg);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onMessage(PlayerMessageEvent event) {
|
||||
Player sender = event.getPlayer();
|
||||
CoreProfile senderProfile = plugin.getProfileManager().getProfile(sender);
|
||||
|
||||
if (!senderProfile.isMessaging() && !senderProfile.hasStaff()) {
|
||||
sender.sendMessage(CC.RED + "You have messaging disabled.");
|
||||
return;
|
||||
}
|
||||
|
||||
Player receiver = event.getReceiver();
|
||||
CoreProfile receiverProfile = plugin.getProfileManager().getProfile(receiver);
|
||||
|
||||
if (senderProfile.hasStaff()) {
|
||||
// NO-OP
|
||||
} else if (!receiverProfile.isMessaging()) {
|
||||
sender.sendMessage(CC.RED + receiver.getName() + " has messaging disabled.");
|
||||
return;
|
||||
}
|
||||
|
||||
String toMsg = CC.GRAY + "(To " + receiverProfile.getPrimaryGroupPrefix() + receiver.getName() + CC.GRAY + ") " + event.getMessage();
|
||||
String fromMsg = CC.GRAY + "(From " + senderProfile.getPrimaryGroupPrefix() + sender.getName()+ CC.GRAY + ") " + event.getMessage();
|
||||
|
||||
sendMessage(senderProfile, receiverProfile, receiver, fromMsg);
|
||||
sendMessage(receiverProfile, senderProfile, sender, toMsg);
|
||||
|
||||
if (receiverProfile.isPlayingSounds()) {
|
||||
receiver.playSound(receiver.getLocation(), Sound.NOTE_PLING, 1.0F, 2.0F);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,329 @@
|
|||
package zone.potion.listeners;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bson.Document;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.FoodLevelChangeEvent;
|
||||
import org.bukkit.event.player.*;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.storage.database.MongoStorage;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
import zone.potion.utils.time.TimeUtil;
|
||||
import zone.potion.utils.timer.Timer;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class PlayerListener implements Listener {
|
||||
private static final String[] DISALLOWED_PERMISSIONS = {
|
||||
"bukkit.command.version", "bukkit.command.plugins", "bukkit.command.help", "bukkit.command.tps",
|
||||
"minecraft.command.tell", "minecraft.command.me", "minecraft.command.help"
|
||||
};
|
||||
private final CorePlugin plugin;
|
||||
|
||||
private boolean isNotBanned(Document document, AsyncPlayerPreLoginEvent event) {
|
||||
if (document != null && document.getBoolean("banned") != null && document.getBoolean("banned")) {
|
||||
long expiry = document.getLong("ban_expiry");
|
||||
long difference = expiry - System.currentTimeMillis();
|
||||
|
||||
if (expiry == -1L || difference > 0) {
|
||||
String formattedDifference = TimeUtil.formatTimeMillis(difference);
|
||||
String kickMessage = expiry == -1L ? Messages.BANNED_PERMANENTLY : String.format(Messages.BANNED_TEMPORARILY, formattedDifference);
|
||||
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED, kickMessage);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onLoginBeforeEnable(AsyncPlayerPreLoginEvent event) {
|
||||
if (!CorePlugin.isServerEnabled()) {
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, CC.RED + "The server is still starting up.");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void onPreLogin(AsyncPlayerPreLoginEvent event) {
|
||||
if (plugin.getPlayerManager().isNameOnline(event.getName()) || plugin.getPlayerManager().getOnlineByIp(event.getAddress()) > 3) {
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, CC.RED + "You're already online!");
|
||||
} else if (event.getLoginResult() == AsyncPlayerPreLoginEvent.Result.ALLOWED) {
|
||||
MongoStorage storage = plugin.getMongoStorage();
|
||||
|
||||
boolean notBannedById = isNotBanned(storage.getDocument("punished_ids", event.getUniqueId()), event);
|
||||
boolean notBannedByIp = isNotBanned(storage.getDocument("punished_addresses", event.getAddress().getHostAddress()), event);
|
||||
|
||||
if (notBannedById && notBannedByIp) {
|
||||
plugin.getProfileManager().createProfile(event.getName(), event.getUniqueId(), event.getAddress().getHostAddress());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onLogin(PlayerLoginEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
if (profile == null) {
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, Messages.DATA_LOAD_FAIL);
|
||||
return;
|
||||
} else if (event.getResult() != PlayerLoginEvent.Result.ALLOWED) {
|
||||
plugin.getProfileManager().removeProfile(player.getUniqueId());
|
||||
return;
|
||||
}
|
||||
|
||||
if (profile.hasStaff()) {
|
||||
plugin.getStaffManager().addCachedStaff(profile);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
event.setJoinMessage(null);
|
||||
|
||||
Player player = event.getPlayer();
|
||||
|
||||
plugin.getPlayerManager().addPlayer(player);
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
plugin.getStaffManager().hideVanishedStaffFromPlayer(player);
|
||||
|
||||
if (profile.hasStaff()) {
|
||||
Map<String, Object> message = Maps.newHashMap();
|
||||
message.put("server", plugin.getServerName());
|
||||
message.put("sender", profile.getPrimaryGroupPrefix() + player.getName());
|
||||
|
||||
plugin.getRedisMessenger().send("staff-join", message);
|
||||
}
|
||||
profile.setLastLocation(new int[]{player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ()});
|
||||
}
|
||||
|
||||
private void onDisconnect(Player player) {
|
||||
plugin.getPlayerManager().removePlayer(player);
|
||||
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
// in case disconnect is somehow called twice
|
||||
if (profile == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (profile.hasStaff()) {
|
||||
plugin.getStaffManager().removeCachedStaff(profile);
|
||||
|
||||
Map<String, Object> message = Maps.newHashMap();
|
||||
message.put("server", plugin.getServerName());
|
||||
message.put("sender", profile.getPrimaryGroupPrefix() + player.getName());
|
||||
|
||||
plugin.getRedisMessenger().send("staff-quit", message);
|
||||
//plugin.getStaffManager().messageStaffWithPrefix(profile.getChatFormat() + CC.PRIMARY + " left the server.");
|
||||
}
|
||||
|
||||
profile.save(true);
|
||||
plugin.getProfileManager().removeProfile(player.getUniqueId());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onKick(PlayerKickEvent event) {
|
||||
event.setLeaveMessage(null);
|
||||
|
||||
onDisconnect(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onQuit(PlayerQuitEvent event) {
|
||||
event.setQuitMessage(null);
|
||||
|
||||
onDisconnect(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onChat(AsyncPlayerChatEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
String msg = event.getMessage();
|
||||
|
||||
if (!profile.hasStaff()) {
|
||||
if (plugin.getServerSettings().getSlowChatTime() != -1) {
|
||||
long lastChatTime = profile.getLastChatTime();
|
||||
int slowChatTime = plugin.getServerSettings().getSlowChatTime();
|
||||
long sum = lastChatTime + (slowChatTime * 1000);
|
||||
|
||||
if (lastChatTime != 0 && sum > System.currentTimeMillis()) {
|
||||
event.setCancelled(true);
|
||||
String diff = TimeUtil.formatTimeMillis(sum - System.currentTimeMillis());
|
||||
player.sendMessage(CC.RED + "Slow chat is currently enabled. You can talk again in " + diff + ".");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Timer timer = profile.getChatCooldownTimer();
|
||||
|
||||
if (timer.isActive()) {
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(CC.RED + "You can't chat for another " + timer.formattedExpiration() + ".");
|
||||
return;
|
||||
}
|
||||
|
||||
} else if (profile.isInStaffChat()) {
|
||||
event.setCancelled(true);
|
||||
|
||||
Map<String, Object> message = Maps.newHashMap();
|
||||
|
||||
message.put("server", plugin.getServerName());
|
||||
message.put("format", profile.getPrimaryGroupPrefix() + player.getName());
|
||||
message.put("message", event.getMessage());
|
||||
message.put("sender", event.getPlayer().getName());
|
||||
plugin.getRedisMessenger().send("staff-chat", message);
|
||||
//plugin.getStaffManager().messageStaff(profile.getChatFormat(), msg);
|
||||
return;
|
||||
}
|
||||
|
||||
if (plugin.getFilter().isFiltered(msg)) {
|
||||
if (profile.hasStaff()) {
|
||||
player.sendMessage(CC.RED + "That would have been filtered.");
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
|
||||
String formattedMessage = profile.getPrimaryGroupPrefix() + player.getName() + CC.R + ": " + msg;
|
||||
|
||||
plugin.getStaffManager().messageStaff(CC.RED + "(Filtered) " + formattedMessage);
|
||||
player.sendMessage(formattedMessage);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Iterator<Player> recipients = event.getRecipients().iterator();
|
||||
|
||||
while (recipients.hasNext()) {
|
||||
Player recipient = recipients.next();
|
||||
CoreProfile recipientProfile = plugin.getProfileManager().getProfile(recipient);
|
||||
|
||||
if (recipientProfile == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (recipientProfile.hasPlayerIgnored(player.getUniqueId())
|
||||
|| (!recipientProfile.isGlobalChatEnabled() && (!profile.hasStaff() || recipientProfile.hasStaff()))) {
|
||||
recipients.remove();
|
||||
} else if (recipient != player) {
|
||||
String[] words = msg.split(" ");
|
||||
boolean found = false;
|
||||
|
||||
StringBuilder newMessage = new StringBuilder();
|
||||
|
||||
for (String word : words) {
|
||||
if (recipient.getName().equalsIgnoreCase(word) && !found) {
|
||||
newMessage.append(CC.PINK).append(CC.I).append(word).append(CC.R).append(" ");
|
||||
found = true;
|
||||
} else {
|
||||
newMessage.append(word).append(" ");
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (recipientProfile.isPlayingSounds()) {
|
||||
recipient.playSound(recipient.getLocation(), Sound.LEVEL_UP, 1.0F, 2.0F);
|
||||
}
|
||||
|
||||
String mentionMessage = profile.getPrimaryGroupPrefix() + player.getName()+ CC.R + ": " + newMessage.toString();
|
||||
|
||||
recipient.sendMessage(mentionMessage);
|
||||
recipient.sendMessage(player.getDisplayName() + CC.PRIMARY + " mentioned you!");
|
||||
|
||||
recipients.remove();
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> map = Maps.newHashMap();
|
||||
map.put("message", event.getMessage());
|
||||
map.put("format", profile.getPrimaryGroupPrefix() + player.getName());
|
||||
map.put("region", plugin.getConfig().getString("region"));
|
||||
map.put("uuid", event.getPlayer().getUniqueId().toString());
|
||||
plugin.getRedisMessenger().send("cross-chat", map);
|
||||
event.setFormat(profile.getPrimaryGroupPrefix() + player.getName() + CC.R + ": %2$s");
|
||||
|
||||
profile.updateLastChatTime();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCommand(PlayerCommandPreprocessEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
|
||||
if (profile.hasStaff()) return;
|
||||
|
||||
Timer timer = profile.getCommandCooldownTimer();
|
||||
|
||||
if (timer.isActive()) {
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(CC.RED + "You can't use commands for another " + timer.formattedExpiration() + ".");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFreezeDamage(EntityDamageByEntityEvent e) {
|
||||
if (e.getDamager() instanceof Player) {
|
||||
Player player = (Player) e.getDamager();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (e.getEntity() instanceof Player && plugin.getProfileManager().getProfile((Player)e.getEntity()).isFrozen() || profile.isFrozen())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFreezeCommand(PlayerCommandPreprocessEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (profile.isFrozen()) {
|
||||
player.sendMessage(CC.RED + "You cannot run commands while you are frozen.");
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFreezeInteract(PlayerInteractEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (profile.isFrozen()) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFreezeSprint(PlayerToggleSprintEvent e) {
|
||||
Player player = e.getPlayer();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (profile.isFrozen()) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onFoodLevelChange(FoodLevelChangeEvent e) {
|
||||
if (!(e.getEntity() instanceof Player)) return;
|
||||
Player player = (Player) e.getEntity();
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (profile.isFrozen()) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.Bukkit;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ChatListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("cross-chat")
|
||||
public void onChat(Map<String, Object> messageMap) {
|
||||
String format = (String) messageMap.get("format");
|
||||
String message = (String) messageMap.get("message");
|
||||
String region = (String) messageMap.get("region");
|
||||
UUID senderUUID = UUID.fromString((String) messageMap.get("uuid"));
|
||||
if (plugin.getConfig().getString("region").equalsIgnoreCase(region)) return;
|
||||
|
||||
plugin.getServer().getOnlinePlayers().stream()
|
||||
.map(player -> plugin.getProfileManager().getProfile(player))
|
||||
.filter(player -> !player.hasPlayerIgnored(senderUUID))
|
||||
.filter(CoreProfile::isCrossChat)
|
||||
.filter(CoreProfile::isGlobalChatEnabled)
|
||||
.map(profile -> Bukkit.getPlayer(profile.getId()))
|
||||
.forEach(player -> player.sendMessage(CC.GRAY + "[" + region.toUpperCase() + "] " + CC.R + format + CC.R + ": " + message));
|
||||
//Bukkit.broadcastMessage(CC.GRAY + "[" + region.toUpperCase() + "] " + CC.R + format + CC.R + ": " + message);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class DispatchCommandListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("dispatch-command")
|
||||
public void onDispatch(Map<String, Object> map) {
|
||||
String command = (String) map.get("command");
|
||||
String server = (String) map.get("server");
|
||||
String sender = (String) map.get("sender");
|
||||
plugin.getServer().getScheduler().runTask(plugin, () -> {
|
||||
plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), command);
|
||||
for (Player player : plugin.getServer().getOnlinePlayers()) {
|
||||
CoreProfile profile = plugin.getProfileManager().getProfile(player);
|
||||
if (profile.hasStaff())
|
||||
player.sendMessage(CC.D_AQUA + "[" + server + "] " + CC.RED + sender + CC.SECONDARY + " dispatched command " + CC.PRIMARY + "\"/" + command + "\"");
|
||||
}
|
||||
Bukkit.getConsoleSender().sendMessage(CC.D_AQUA + "[" + server + "] " + CC.RED + sender + CC.SECONDARY + " dispatched command " + CC.PRIMARY + "\"/" + command + "\"");
|
||||
});
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class FreezeListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("freeze-listener")
|
||||
public void onFreeze(Map<String, Object> map) {
|
||||
String sender = (String) map.get("sender");
|
||||
String target = (String) map.get("frozen");
|
||||
String server = (String) map.get("server");
|
||||
boolean frozen = Boolean.valueOf((String) map.get("isFrozen"));
|
||||
plugin.getStaffManager().messageStaffWithPrefix(CC.PRIMARY + sender + CC.SECONDARY + " has " + (frozen ? "frozen " : "unfrozen ") + target + ".", server);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class HelpopListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("help-op")
|
||||
public void onHelpOp(Map<String, Object> map) {
|
||||
String server = (String) map.get("server");
|
||||
String player = (String) map.get("player");
|
||||
String request = (String) map.get("request");
|
||||
plugin.getStaffManager().messageStaff(CC.RED + "\n(HelpOp) " + CC.D_AQUA + "[" + server + "] " + CC.SECONDARY + player
|
||||
+ CC.PRIMARY + " requested assistance: " + CC.SECONDARY + request + CC.PRIMARY + ".\n ");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class ReportListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("report")
|
||||
public void onReport(Map<String, Object> map) {
|
||||
String player = (String) map.get("reporter");
|
||||
String target = (String) map.get("reported");
|
||||
String report = (String) map.get("reason");
|
||||
String server = (String) map.get("server");
|
||||
plugin.getStaffManager().messageStaff("");
|
||||
plugin.getStaffManager().messageStaff(CC.RED + "(Report) " + CC.D_AQUA + "[" + server + "] " + CC.SECONDARY + player + CC.PRIMARY
|
||||
+ " reported " + CC.SECONDARY + target + CC.PRIMARY + " for " + CC.SECONDARY + report + CC.PRIMARY + ".");
|
||||
plugin.getStaffManager().messageStaff("");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class StaffChatListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("staff-chat")
|
||||
public void onStaffChatMessage(Map<String, Object> message) {
|
||||
String sender = (String) message.get("sender");
|
||||
if (sender.equalsIgnoreCase("CONSOLE")) {
|
||||
plugin.getStaffManager().messageStaff(CC.D_RED + sender, (String) message.get("message"), "GLOBAL");
|
||||
return;
|
||||
}
|
||||
plugin.getStaffManager().messageStaff((String) message.get("format"), (String) message.get("message"), (String) message.get("server"));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package zone.potion.listeners.redis;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class StaffJoinListener {
|
||||
|
||||
private final CorePlugin plugin;
|
||||
|
||||
@RedisHandler("staff-join")
|
||||
public void onJoin(Map<String, Object> message) {
|
||||
plugin.getStaffManager().messageStaffWithPrefix(message.get("sender") + CC.PRIMARY + " joined the server.", (String) message.get("server"));
|
||||
}
|
||||
|
||||
@RedisHandler("staff-quit")
|
||||
public void onQuit(Map<String, Object> message) {
|
||||
plugin.getStaffManager().messageStaffWithPrefix(message.get("sender") + CC.PRIMARY + " left the server.", (String) message.get("server"));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package zone.potion.managers;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.inventory.menu.Menu;
|
||||
import zone.potion.inventory.menu.impl.ReportMenu;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MenuManager {
|
||||
private final Map<Class<? extends Menu>, Menu> menus = new HashMap<>();
|
||||
|
||||
public MenuManager(CorePlugin plugin) {
|
||||
registerMenus(
|
||||
new ReportMenu(plugin)
|
||||
);
|
||||
}
|
||||
|
||||
public Menu getMenu(Class<? extends Menu> clazz) {
|
||||
return menus.get(clazz);
|
||||
}
|
||||
|
||||
public Menu getMatchingMenu(Inventory other) {
|
||||
for (Menu menu : menus.values()) {
|
||||
if (menu.getInventory().equals(other)) {
|
||||
return menu;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void registerMenus(Menu... menus) {
|
||||
for (Menu menu : menus) {
|
||||
menu.setup();
|
||||
menu.update();
|
||||
this.menus.put(menu.getClass(), menu);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package zone.potion.managers;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import zone.potion.CorePlugin;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.*;
|
||||
|
||||
public class PlayerManager {
|
||||
private final Map<InetAddress, Integer> onlinePerIp = new HashMap<>();
|
||||
private final List<String> onlineNames = new ArrayList<>();
|
||||
|
||||
private final Map<UUID, BukkitTask> announcementTasks = new HashMap<>();
|
||||
|
||||
public void addPlayer(Player player) {
|
||||
onlineNames.add(player.getName());
|
||||
|
||||
InetAddress address = player.getAddress().getAddress();
|
||||
int count = onlinePerIp.getOrDefault(address, 0) + 1;
|
||||
|
||||
onlinePerIp.put(address, count);
|
||||
}
|
||||
|
||||
public void removePlayer(Player player) {
|
||||
onlineNames.remove(player.getName());
|
||||
|
||||
InetAddress address = player.getAddress().getAddress();
|
||||
int count = onlinePerIp.getOrDefault(address, 0) - 1;
|
||||
|
||||
if (count == 0) {
|
||||
onlinePerIp.remove(address);
|
||||
} else {
|
||||
onlinePerIp.put(address, count);
|
||||
}
|
||||
|
||||
BukkitTask announcementTask = announcementTasks.get(player.getUniqueId());
|
||||
if (announcementTask != null) {
|
||||
announcementTask.cancel();
|
||||
}
|
||||
announcementTasks.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
public int getOnlineByIp(InetAddress address) {
|
||||
return onlinePerIp.getOrDefault(address, 0);
|
||||
}
|
||||
|
||||
public boolean isNameOnline(String name) {
|
||||
return onlineNames.contains(name);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package zone.potion.managers;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ProfileManager {
|
||||
private final Map<UUID, CoreProfile> profiles = new HashMap<>();
|
||||
|
||||
public CoreProfile createProfile(String name, UUID id, String address) {
|
||||
CoreProfile profile = new CoreProfile(name, id, address);
|
||||
profiles.put(id, profile);
|
||||
return profile;
|
||||
}
|
||||
|
||||
public CoreProfile getProfile(Player player) {
|
||||
return (profiles.containsKey(player.getUniqueId()) ? profiles.get(player.getUniqueId()) : createProfile(player.getDisplayName(), player.getUniqueId(), player.getAddress().getAddress().getHostAddress()));
|
||||
}
|
||||
|
||||
public void removeProfile(UUID id) {
|
||||
profiles.remove(id);
|
||||
}
|
||||
|
||||
public void saveProfiles() {
|
||||
for (CoreProfile profile : profiles.values()) {
|
||||
profile.save(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package zone.potion.managers;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.player.CoreProfile;
|
||||
import zone.potion.utils.message.CC;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class StaffManager {
|
||||
@Getter
|
||||
private final Set<CoreProfile> cachedStaff = new HashSet<>();
|
||||
private final CorePlugin plugin;
|
||||
|
||||
public void addCachedStaff(CoreProfile profile) {
|
||||
cachedStaff.add(profile);
|
||||
}
|
||||
|
||||
public boolean isInStaffCache(CoreProfile profile) {
|
||||
return cachedStaff.contains(profile);
|
||||
}
|
||||
|
||||
public void removeCachedStaff(CoreProfile profile) {
|
||||
cachedStaff.remove(profile);
|
||||
}
|
||||
|
||||
public void messageStaff(String displayName, String msg, String server) {
|
||||
String formattedMsg = CC.SECONDARY + "[Staff] " + ChatColor.DARK_AQUA + "[" + server + "] " + CC.SECONDARY + displayName + CC.R + ": " + msg;
|
||||
messageStaff(formattedMsg);
|
||||
}
|
||||
|
||||
public void messageStaff(String msg) {
|
||||
for (CoreProfile profile : cachedStaff) {
|
||||
Player loopPlayer = plugin.getServer().getPlayer(profile.getId());
|
||||
|
||||
if (loopPlayer != null && loopPlayer.isOnline()) {
|
||||
loopPlayer.sendMessage(msg);
|
||||
}
|
||||
}
|
||||
plugin.getServer().getConsoleSender().sendMessage(msg);
|
||||
}
|
||||
|
||||
public void messageStaffWithPrefix(String msg, String server) {
|
||||
msg = CC.SECONDARY + "[Staff] " + CC.D_AQUA + "[" + server + "] " + CC.R + msg;
|
||||
|
||||
for (CoreProfile profile : cachedStaff) {
|
||||
Player loopPlayer = plugin.getServer().getPlayer(profile.getId());
|
||||
|
||||
if (loopPlayer != null && loopPlayer.isOnline()) {
|
||||
loopPlayer.sendMessage(msg);
|
||||
}
|
||||
}
|
||||
plugin.getServer().getConsoleSender().sendMessage(msg);
|
||||
}
|
||||
|
||||
public void hideVanishedStaffFromPlayer(Player player) {
|
||||
if (!plugin.getProfileManager().getProfile(player).hasStaff()) {
|
||||
for (CoreProfile profile : cachedStaff) {
|
||||
if (profile.isVanished()) {
|
||||
Player loopPlayer = plugin.getServer().getPlayer(profile.getId());
|
||||
|
||||
if (loopPlayer != null && loopPlayer.isOnline()) {
|
||||
player.hidePlayer(loopPlayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
package zone.potion.player;
|
||||
|
||||
import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.caching.MetaData;
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.storage.database.MongoRequest;
|
||||
import zone.potion.utils.message.CC;
|
||||
import zone.potion.utils.message.Messages;
|
||||
import zone.potion.utils.time.TimeUtil;
|
||||
import zone.potion.utils.timer.Timer;
|
||||
import zone.potion.utils.timer.impl.DoubleTimer;
|
||||
import zone.potion.utils.timer.impl.IntegerTimer;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
public class CoreProfile {
|
||||
|
||||
private final List<UUID> ignored = new ArrayList<>();
|
||||
private final List<String> knownAddresses = new ArrayList<>();
|
||||
private final String name;
|
||||
private final UUID id;
|
||||
private final Timer commandCooldownTimer = new DoubleTimer(1);
|
||||
private final Timer reportCooldownTimer = new IntegerTimer(TimeUnit.SECONDS, 60);
|
||||
|
||||
private Timer chatCooldownTimer;
|
||||
private UUID converser;
|
||||
private String reportingPlayerName;
|
||||
|
||||
private boolean playingSounds = true;
|
||||
private boolean messaging = true;
|
||||
private boolean crossChat = true;
|
||||
private boolean globalChatEnabled = true;
|
||||
private boolean inStaffChat;
|
||||
private boolean vanished;
|
||||
private boolean frozen = false;
|
||||
|
||||
private long lastChatTime;
|
||||
private int[] lastLocation = new int[]{0, 0, 0};
|
||||
private int afkViolations = 0;
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public CoreProfile(String name, UUID id, String address) {
|
||||
this.name = name;
|
||||
this.id = id;
|
||||
this.knownAddresses.add(address);
|
||||
|
||||
CorePlugin.getInstance().getMongoStorage().getOrCreateDocument("players", id, (document, exists) -> {
|
||||
if (exists) {
|
||||
this.inStaffChat = document.getBoolean("staff_chat_enabled", inStaffChat);
|
||||
this.messaging = document.getBoolean("messaging_enabled", messaging);
|
||||
this.playingSounds = document.getBoolean("playing_sounds", playingSounds);
|
||||
this.crossChat = document.getBoolean("cross_chat", crossChat);
|
||||
|
||||
List<UUID> ignored = (List<UUID>) document.get("ignored_ids");
|
||||
|
||||
if (ignored != null) {
|
||||
this.ignored.addAll(ignored);
|
||||
}
|
||||
|
||||
List<String> knownAddresses = (List<String>) document.get("known_addresses");
|
||||
|
||||
if (knownAddresses != null) {
|
||||
for (String knownAddress : knownAddresses) {
|
||||
if (knownAddress.equals(address)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
this.knownAddresses.add(knownAddress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
save(false);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void save(boolean async) {
|
||||
MongoRequest request = MongoRequest.newRequest("players", id)
|
||||
.put("name", name)
|
||||
.put("staff_chat_enabled", inStaffChat)
|
||||
.put("messaging_enabled", messaging)
|
||||
.put("cross_chat", crossChat)
|
||||
.put("playing_sounds", playingSounds)
|
||||
.put("ignored_ids", ignored)
|
||||
.put("known_addresses", knownAddresses);
|
||||
|
||||
if (async) {
|
||||
CorePlugin.getInstance().getServer().getScheduler().runTaskAsynchronously(CorePlugin.getInstance(), request::run);
|
||||
} else {
|
||||
request.run();
|
||||
}
|
||||
}
|
||||
|
||||
public int getLastLocationX() {
|
||||
return lastLocation[0];
|
||||
}
|
||||
|
||||
public int getLastLocationY() {
|
||||
return lastLocation[1];
|
||||
}
|
||||
|
||||
public int getLastLocationZ() {
|
||||
return lastLocation[2];
|
||||
}
|
||||
|
||||
public void updateLastChatTime() {
|
||||
lastChatTime = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
public boolean hasStaff(){
|
||||
if(getPlayer() == null) return false;
|
||||
|
||||
return getPlayer().hasPermission("spike.staff");
|
||||
}
|
||||
|
||||
public void ignore(UUID id) {
|
||||
ignored.add(id);
|
||||
}
|
||||
|
||||
public void unignore(UUID id) {
|
||||
ignored.remove(id);
|
||||
}
|
||||
|
||||
public boolean hasPlayerIgnored(UUID id) {
|
||||
return ignored.contains(id);
|
||||
}
|
||||
|
||||
public Player getPlayer() {
|
||||
return Bukkit.getPlayer(id);
|
||||
}
|
||||
|
||||
public boolean freeze(CommandSender executor) {
|
||||
frozen = !frozen;
|
||||
if (frozen) {
|
||||
getPlayer().setWalkSpeed(0.0F);
|
||||
getPlayer().setFlySpeed(0.0F);
|
||||
getPlayer().setFoodLevel(0);
|
||||
getPlayer().setSprinting(false);
|
||||
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.JUMP, Integer.MAX_VALUE, 200));
|
||||
Arrays.stream(Messages.FROZEN_MESSAGE).forEach(message -> Messages.sendCenteredMessage(getPlayer(), message));
|
||||
executor.sendMessage(CC.RED + "Player frozen.");
|
||||
return true;
|
||||
}
|
||||
getPlayer().setWalkSpeed(0.2f);
|
||||
getPlayer().setFlySpeed(0.0001f);
|
||||
getPlayer().setFoodLevel(20);
|
||||
getPlayer().setSprinting(true);
|
||||
getPlayer().removePotionEffect(PotionEffectType.JUMP);
|
||||
getPlayer().sendMessage(CC.SECONDARY + "You have been unfrozen.");
|
||||
executor.sendMessage(CC.RED + getPlayer().getName() + " has been unfrozen.");
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getPrimaryGroupPrefix() {
|
||||
User user = CorePlugin.getInstance().getLuckPermsApi().getUser(id);
|
||||
UserData userData = user.getCachedData();
|
||||
Contexts contexts = CorePlugin.getInstance().getLuckPermsApi().getContextForUser(user).get();
|
||||
|
||||
MetaData metaData = userData.getMetaData(contexts);
|
||||
|
||||
return metaData.getPrefix();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package zone.potion.redis;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
|
||||
import redis.clients.jedis.Jedis;
|
||||
import redis.clients.jedis.JedisPool;
|
||||
import redis.clients.jedis.JedisPubSub;
|
||||
import zone.potion.CorePlugin;
|
||||
import zone.potion.redis.annotation.RedisHandler;
|
||||
import zone.potion.redis.message.RedisMessage;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Getter
|
||||
public class RedisMessenger {
|
||||
|
||||
private final JedisPool jedisPool;
|
||||
private final CorePlugin plugin;
|
||||
private Set<Object> listeners = new HashSet<>();
|
||||
|
||||
|
||||
public RedisMessenger(CorePlugin plugin, String host, int port, int timeout, String password) {
|
||||
this.plugin = plugin;
|
||||
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
|
||||
config.setMaxTotal(20);
|
||||
this.jedisPool = new JedisPool(config, host, port, timeout, password);
|
||||
|
||||
}
|
||||
|
||||
public void initialize() {
|
||||
|
||||
//In order to avoid subscribing twice to the same redis channel, we add a simple set.
|
||||
Set<String> subscribedChannels = Sets.newHashSet();
|
||||
Map<String, Pair<Object, Method>> map = Maps.newHashMap();
|
||||
|
||||
//We schedule an asynchronous task to handle our subscriptions.
|
||||
listeners.forEach(listener -> {
|
||||
//After looping through each listener, we get that listener's methods, and try to find where the RedisHandler annotation is used, we add that to a set.
|
||||
Set<Method> methods = getMethodsOfAnnotation(listener.getClass(), RedisHandler.class);
|
||||
|
||||
for (Method method : methods) {
|
||||
//For each of these sets, we get the redis handler, check if we're already subscribed, if not, we subscribe to the channel.
|
||||
RedisHandler handler = method.getAnnotation(RedisHandler.class);
|
||||
if (!subscribedChannels.contains(handler.value())) {
|
||||
map.put(handler.value(), new ImmutablePair<>(listener, method));
|
||||
subscribedChannels.add(handler.value());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
try (Jedis jedis = jedisPool.getResource()) {
|
||||
jedis.subscribe(new JedisPubSub() {
|
||||
@Override
|
||||
public void onMessage(String channel, String message) {
|
||||
map.forEach((c, pair) -> {
|
||||
if (channel.equalsIgnoreCase(c)) {
|
||||
try {
|
||||
pair.getValue().invoke(pair.getKey(), RedisMessage.deserialize(message));
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}, subscribedChannels.toArray(new String[0]));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void send(String channel, Map<String, Object> message) {
|
||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||
try (Jedis jedis = jedisPool.getResource()) {
|
||||
jedis.publish(channel, RedisMessage.serialize(message));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void registerListeners(Object... objects) {
|
||||
for (Object object : objects) {
|
||||
getListeners().add(object);
|
||||
}
|
||||
}
|
||||
|
||||
private Set<Method> getMethodsOfAnnotation(Class<?> clazz, Class<? extends Annotation> annotation) {
|
||||
return Stream.of(clazz.getDeclaredMethods())
|
||||
.filter(method -> method.isAnnotationPresent(annotation))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package zone.potion.redis.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
public @interface RedisHandler {
|
||||
|
||||
String value();
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package zone.potion.redis.message;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import zone.potion.CorePlugin;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
|
||||
public class RedisMessage {
|
||||
|
||||
public static Map<String, Object> deserialize(String string) {
|
||||
Type type = new TypeToken<Map<String, String>>() {
|
||||
}.getType();
|
||||
return CorePlugin.GSON.fromJson(string, type);
|
||||
}
|
||||
|
||||
public static String serialize(Map<String, Object> map) {
|
||||
return CorePlugin.GSON.toJson(map);
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue