Yeetus feetus ❤️
This commit is contained in:
parent
ec0495ae82
commit
ce2cad7fab
|
@ -0,0 +1,21 @@
|
||||||
|
<?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="application" />
|
||||||
|
<module name="common" />
|
||||||
|
<module name="plugin" />
|
||||||
|
</profile>
|
||||||
|
</annotationProcessing>
|
||||||
|
<bytecodeTargetLevel>
|
||||||
|
<module name="application" target="1.8" />
|
||||||
|
<module name="common" target="1.8" />
|
||||||
|
<module name="plugin" target="1.8" />
|
||||||
|
<module name="quartz-parent" target="1.5" />
|
||||||
|
</bytecodeTargetLevel>
|
||||||
|
</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.code.gson:gson:2.8.5">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.5/gson-2.8.5-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.minexd:pidgin:1.0-SNAPSHOT">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/minexd/pidgin/1.0-SNAPSHOT/pidgin-1.0-SNAPSHOT.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/minexd/pidgin/1.0-SNAPSHOT/pidgin-1.0-SNAPSHOT-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/minexd/pidgin/1.0-SNAPSHOT/pidgin-1.0-SNAPSHOT-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: com.qrakn:honcho:1.0-SNAPSHOT">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/honcho/1.0-SNAPSHOT/honcho-1.0-SNAPSHOT.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/honcho/1.0-SNAPSHOT/honcho-1.0-SNAPSHOT-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/honcho/1.0-SNAPSHOT/honcho-1.0-SNAPSHOT-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: com.qrakn:phoenix-lang:1.0-SNAPSHOT">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/phoenix-lang/1.0-SNAPSHOT/phoenix-lang-1.0-SNAPSHOT.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/phoenix-lang/1.0-SNAPSHOT/phoenix-lang-1.0-SNAPSHOT-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/com/qrakn/phoenix-lang/1.0-SNAPSHOT/phoenix-lang-1.0-SNAPSHOT-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: 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: 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-20160221.214602-128.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20160221.214602-128-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20160221.214602-128-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.projectlombok:lombok:1.16.16">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.16/lombok-1.16.16.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.16/lombok-1.16.16-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.16.16/lombok-1.16.16-sources.jar!/" />
|
||||||
|
</SOURCES>
|
||||||
|
</library>
|
||||||
|
</component>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<component name="libraryTable">
|
||||||
|
<library name="Maven: org.spigotmc:spigot-api:1.8.8-R0.1-SNAPSHOT">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-SNAPSHOT.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-SNAPSHOT-javadoc.jar!/" />
|
||||||
|
</JAVADOC>
|
||||||
|
<SOURCES>
|
||||||
|
<root url="jar://$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-SNAPSHOT-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 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="MavenProjectsManager">
|
||||||
|
<option name="originalFiles">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8 (1)" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/application/application.iml" filepath="$PROJECT_DIR$/application/application.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/common/common.iml" filepath="$PROJECT_DIR$/common/common.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/plugin/plugin.iml" filepath="$PROJECT_DIR$/plugin/plugin.iml" />
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/quartz-parent.iml" filepath="$PROJECT_DIR$/quartz-parent.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,409 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ChangeListManager">
|
||||||
|
<list default="true" id="de07dead-ef27-4866-8ccd-400c42d9fdb0" name="Default" comment="" />
|
||||||
|
<ignored path="$PROJECT_DIR$/out/" />
|
||||||
|
<ignored path="$PROJECT_DIR$/target/" />
|
||||||
|
<ignored path="$PROJECT_DIR$/plugin/target/" />
|
||||||
|
<ignored path="$PROJECT_DIR$/application/target/" />
|
||||||
|
<ignored path="$PROJECT_DIR$/common/target/" />
|
||||||
|
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||||
|
<option name="TRACKING_ENABLED" 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 leaf-file-name="pom.xml" pinned="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="357">
|
||||||
|
<caret line="21" column="10" lean-forward="false" selection-start-line="21" selection-start-column="10" selection-end-line="21" selection-end-column="10" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="Locale.java" pinned="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/plugin/src/main/java/com/minexd/quartz/Locale.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="238">
|
||||||
|
<caret line="17" column="0" lean-forward="false" selection-start-line="17" selection-start-column="0" selection-end-line="27" selection-end-column="5" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
</leaf>
|
||||||
|
</component>
|
||||||
|
<component name="FindInProjectRecents">
|
||||||
|
<findStrings>
|
||||||
|
<find>PlayerInteract</find>
|
||||||
|
</findStrings>
|
||||||
|
</component>
|
||||||
|
<component name="GradleLocalSettings">
|
||||||
|
<option name="externalProjectsViewState">
|
||||||
|
<projects_view />
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="IdeDocumentHistory">
|
||||||
|
<option name="CHANGED_PATHS">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="MavenImportPreferences">
|
||||||
|
<option name="importingSettings">
|
||||||
|
<MavenImportingSettings>
|
||||||
|
<option name="importAutomatically" value="true" />
|
||||||
|
</MavenImportingSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectFrameBounds" extendedState="6">
|
||||||
|
<option name="x" value="-8" />
|
||||||
|
<option name="width" value="1936" />
|
||||||
|
<option name="height" value="1040" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectView">
|
||||||
|
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||||
|
<flattenPackages />
|
||||||
|
<showMembers />
|
||||||
|
<showModules />
|
||||||
|
<showLibraryContents />
|
||||||
|
<hideEmptyPackages />
|
||||||
|
<abbreviatePackageNames />
|
||||||
|
<autoscrollToSource />
|
||||||
|
<autoscrollFromSource />
|
||||||
|
<sortByType />
|
||||||
|
<manualOrder />
|
||||||
|
<foldersAlwaysOnTop value="true" />
|
||||||
|
</navigator>
|
||||||
|
<panes>
|
||||||
|
<pane id="PackagesPane" />
|
||||||
|
<pane id="AndroidView" />
|
||||||
|
<pane id="Scope" />
|
||||||
|
<pane id="ProjectPane">
|
||||||
|
<subPane>
|
||||||
|
<expand>
|
||||||
|
<path>
|
||||||
|
<item name="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="plugin" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="plugin" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="plugin" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
<path>
|
||||||
|
<item name="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="plugin" 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="quartz-parent" type="b2602c69:ProjectViewProjectNode" />
|
||||||
|
<item name="quartz-parent" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="plugin" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="main" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="java" type="462c0819:PsiDirectoryNode" />
|
||||||
|
<item name="quartz" type="462c0819:PsiDirectoryNode" />
|
||||||
|
</path>
|
||||||
|
</expand>
|
||||||
|
<select />
|
||||||
|
</subPane>
|
||||||
|
</pane>
|
||||||
|
<pane id="Scratches" />
|
||||||
|
</panes>
|
||||||
|
</component>
|
||||||
|
<component name="RecentsManager">
|
||||||
|
<key name="CopyFile.RECENT_KEYS">
|
||||||
|
<recent name="C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common" />
|
||||||
|
<recent name="C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application" />
|
||||||
|
<recent name="C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\plugin" />
|
||||||
|
</key>
|
||||||
|
</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="RunManager" selected="Maven.Unnamed">
|
||||||
|
<configuration name="Unnamed" type="MavenRunConfiguration" factoryName="Maven">
|
||||||
|
<MavenSettings>
|
||||||
|
<option name="myGeneralSettings" />
|
||||||
|
<option name="myRunnerSettings" />
|
||||||
|
<option name="myRunnerParameters">
|
||||||
|
<MavenRunnerParameters>
|
||||||
|
<option name="profiles">
|
||||||
|
<set />
|
||||||
|
</option>
|
||||||
|
<option name="goals">
|
||||||
|
<list>
|
||||||
|
<option value="clean" />
|
||||||
|
<option value="install" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
<option name="profilesMap">
|
||||||
|
<map />
|
||||||
|
</option>
|
||||||
|
<option name="resolveToWorkspace" value="false" />
|
||||||
|
<option name="workingDirPath" value="$PROJECT_DIR$" />
|
||||||
|
</MavenRunnerParameters>
|
||||||
|
</option>
|
||||||
|
</MavenSettings>
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="Applet" factoryName="Applet">
|
||||||
|
<option name="WIDTH" value="400" />
|
||||||
|
<option name="HEIGHT" value="300" />
|
||||||
|
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||||
|
<module />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="Application" factoryName="Application">
|
||||||
|
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||||
|
<option name="MAIN_CLASS_NAME" />
|
||||||
|
<option name="VM_PARAMETERS" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH" />
|
||||||
|
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||||
|
<option name="ENV_VARIABLES" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="true" />
|
||||||
|
<module name="" />
|
||||||
|
<envs />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||||
|
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||||
|
<module name="" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH" />
|
||||||
|
<option name="PACKAGE_NAME" />
|
||||||
|
<option name="MAIN_CLASS_NAME" />
|
||||||
|
<option name="METHOD_NAME" />
|
||||||
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea" />
|
||||||
|
<option name="PARAMETERS" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<option name="ENV_VARIABLES" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="true" />
|
||||||
|
<option name="TEST_SEARCH_SCOPE">
|
||||||
|
<value defaultName="singleModule" />
|
||||||
|
</option>
|
||||||
|
<envs />
|
||||||
|
<patterns />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
|
||||||
|
<module name="" />
|
||||||
|
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
||||||
|
<option name="PROGRAM_PARAMETERS" />
|
||||||
|
<predefined_log_file id="idea.log" enabled="true" />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="Remote" factoryName="Remote">
|
||||||
|
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||||
|
<option name="SERVER_MODE" value="false" />
|
||||||
|
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||||
|
<option name="HOST" value="localhost" />
|
||||||
|
<option name="PORT" value="5005" />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="true" type="TestNG" factoryName="TestNG">
|
||||||
|
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||||
|
<module name="" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||||
|
<option name="ALTERNATIVE_JRE_PATH" />
|
||||||
|
<option name="SUITE_NAME" />
|
||||||
|
<option name="PACKAGE_NAME" />
|
||||||
|
<option name="MAIN_CLASS_NAME" />
|
||||||
|
<option name="METHOD_NAME" />
|
||||||
|
<option name="GROUP_NAME" />
|
||||||
|
<option name="TEST_OBJECT" value="CLASS" />
|
||||||
|
<option name="VM_PARAMETERS" value="-ea" />
|
||||||
|
<option name="PARAMETERS" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||||
|
<option name="OUTPUT_DIRECTORY" />
|
||||||
|
<option name="ANNOTATION_TYPE" />
|
||||||
|
<option name="ENV_VARIABLES" />
|
||||||
|
<option name="PASS_PARENT_ENVS" value="true" />
|
||||||
|
<option name="TEST_SEARCH_SCOPE">
|
||||||
|
<value defaultName="singleModule" />
|
||||||
|
</option>
|
||||||
|
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
||||||
|
<option name="PROPERTIES_FILE" />
|
||||||
|
<envs />
|
||||||
|
<properties />
|
||||||
|
<listeners />
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
|
<component name="ShelveChangesManager" show_recycled="false">
|
||||||
|
<option name="remove_strategy" value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="TaskManager">
|
||||||
|
<task active="true" id="Default" summary="Default task">
|
||||||
|
<changelist id="de07dead-ef27-4866-8ccd-400c42d9fdb0" name="Default" comment="" />
|
||||||
|
<created>1543033884549</created>
|
||||||
|
<option name="number" value="Default" />
|
||||||
|
<option name="presentableId" value="Default" />
|
||||||
|
<updated>1543033884549</updated>
|
||||||
|
</task>
|
||||||
|
<servers />
|
||||||
|
</component>
|
||||||
|
<component name="ToolWindowManager">
|
||||||
|
<frame x="-8" y="-8" width="1456" height="1056" extended-state="6" />
|
||||||
|
<editor active="true" />
|
||||||
|
<layout>
|
||||||
|
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||||
|
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32934782" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Floobits" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25358167" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||||
|
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||||
|
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||||
|
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||||
|
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||||
|
</layout>
|
||||||
|
</component>
|
||||||
|
<component name="VcsContentAnnotationSettings">
|
||||||
|
<option name="myLimit" value="2678400000" />
|
||||||
|
</component>
|
||||||
|
<component name="XDebuggerManager">
|
||||||
|
<breakpoint-manager />
|
||||||
|
<watches-manager />
|
||||||
|
</component>
|
||||||
|
<component name="editorHistoryManager">
|
||||||
|
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/plugin/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/plugin/src/main/java/com/minexd/quartz/task/UpdateTask.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="238">
|
||||||
|
<caret line="20" column="0" lean-forward="true" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/application/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="204">
|
||||||
|
<caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/application/src/main/java/com/minexd/quartz/log/Logger.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="119">
|
||||||
|
<caret line="9" column="0" lean-forward="true" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="0">
|
||||||
|
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/common/src/main/java/com/minexd/quartz/data/QuartzData.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="357">
|
||||||
|
<caret line="35" column="0" lean-forward="true" selection-start-line="35" selection-start-column="0" selection-end-line="35" selection-end-column="0" />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/pom.xml">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="357">
|
||||||
|
<caret line="21" column="10" lean-forward="false" selection-start-line="21" selection-start-column="10" selection-end-line="21" selection-end-column="10" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/plugin/src/main/java/com/minexd/quartz/Locale.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="238">
|
||||||
|
<caret line="17" column="0" lean-forward="false" selection-start-line="17" selection-start-column="0" selection-end-line="27" selection-end-column="5" />
|
||||||
|
<folding />
|
||||||
|
</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>
|
||||||
|
</states>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
|
<output url="file://$MODULE_DIR$/target/classes" />
|
||||||
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="module" module-name="common" />
|
||||||
|
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.16" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.minexd:pidgin:1.0-SNAPSHOT" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,46 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>application</artifactId>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.0</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifestEntries>
|
||||||
|
<Built-By>joeleoli</Built-By>
|
||||||
|
<Main-Class>com.minexd.quartz.Quartz</Main-Class>
|
||||||
|
</manifestEntries>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1,63 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>application</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<artifactId>common</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<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.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifestEntries>
|
||||||
|
<Built-By>joeleoli</Built-By>
|
||||||
|
<Main-Class>com.minexd.quartz.Quartz</Main-Class>
|
||||||
|
</manifestEntries>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,82 @@
|
||||||
|
package com.minexd.quartz;
|
||||||
|
|
||||||
|
import com.minexd.pidgin.Pidgin;
|
||||||
|
import com.minexd.quartz.network.NetworkListener;
|
||||||
|
import com.minexd.quartz.log.Logger;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovePacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerSendPacket;
|
||||||
|
import com.minexd.quartz.packet.QueueListPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerMetadataPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerUpdatePacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.thread.BroadcastThread;
|
||||||
|
import com.minexd.quartz.thread.QueueThread;
|
||||||
|
import com.minexd.quartz.data.QuartzData;
|
||||||
|
import com.minexd.quartz.file.Config;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import lombok.Getter;
|
||||||
|
import redis.clients.jedis.Jedis;
|
||||||
|
import redis.clients.jedis.JedisPool;
|
||||||
|
|
||||||
|
public class Quartz {
|
||||||
|
|
||||||
|
private static Quartz quartz;
|
||||||
|
|
||||||
|
@Getter private Config config;
|
||||||
|
@Getter private JedisPool jedisPool;
|
||||||
|
@Getter private Pidgin pidgin;
|
||||||
|
@Getter private QuartzData quartzData;
|
||||||
|
|
||||||
|
private Quartz() {
|
||||||
|
quartz = this;
|
||||||
|
|
||||||
|
config = new Config();
|
||||||
|
jedisPool = new JedisPool(config.getRedisHost(), config.getRedisPort());
|
||||||
|
|
||||||
|
if (config.getRedisPassword() != null) {
|
||||||
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
|
jedis.auth(config.getRedisPassword());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pidgin = new Pidgin("quartz", config.getRedisHost(), config.getRedisPort(), config.getRedisPassword());
|
||||||
|
pidgin.registerListener(new NetworkListener());
|
||||||
|
|
||||||
|
Arrays.asList(
|
||||||
|
PlayerAddedPacket.class,
|
||||||
|
PlayerAddPacket.class,
|
||||||
|
PlayerRemovedPacket.class,
|
||||||
|
PlayerRemovePacket.class,
|
||||||
|
PlayerSendPacket.class,
|
||||||
|
QueueListPacket.class,
|
||||||
|
ServerMetadataPacket.class,
|
||||||
|
ServerUpdatePacket.class
|
||||||
|
).forEach(pidgin::registerPacket);
|
||||||
|
|
||||||
|
quartzData = new QuartzData(jedisPool);
|
||||||
|
|
||||||
|
for (String name : config.getQueues()) {
|
||||||
|
quartzData.getQueues().add(new Queue(name));
|
||||||
|
|
||||||
|
Logger.print("Loaded queue `" + name + "` from config");
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.print("Quartz is now running...");
|
||||||
|
|
||||||
|
new QueueThread().start();
|
||||||
|
new BroadcastThread().start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Quartz();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Quartz get() {
|
||||||
|
return quartz;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package com.minexd.quartz.file;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class Config {
|
||||||
|
|
||||||
|
private String[] queues;
|
||||||
|
private String redisHost;
|
||||||
|
private int redisPort;
|
||||||
|
private String redisPassword;
|
||||||
|
|
||||||
|
public Config() {
|
||||||
|
File file = new File("config.properties");
|
||||||
|
|
||||||
|
if (!file.exists()) {
|
||||||
|
try {
|
||||||
|
file.createNewFile();
|
||||||
|
|
||||||
|
FileOutputStream output = new FileOutputStream(file);
|
||||||
|
output.write("queues=test1,test2,test3\n".getBytes());
|
||||||
|
output.write("redis-host=127.0.0.1\n".getBytes());
|
||||||
|
output.write("redis-port=6379\n".getBytes());
|
||||||
|
output.write("redis-password=dev\n".getBytes());
|
||||||
|
output.flush();
|
||||||
|
output.close();
|
||||||
|
} catch (IOException io) {
|
||||||
|
io.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Properties prop = new Properties();
|
||||||
|
InputStream input = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
input = new FileInputStream("config.properties");
|
||||||
|
|
||||||
|
prop.load(input);
|
||||||
|
|
||||||
|
String queues = ((String) prop.getOrDefault("queues", ""));
|
||||||
|
|
||||||
|
this.queues = queues.equals("") ? new String[0] : queues.split(",");
|
||||||
|
this.redisHost = ((String) prop.getOrDefault("redis-host", "127.0.0.1"));
|
||||||
|
this.redisPort = Integer.valueOf((String) prop.getOrDefault("redis-port", "6379"));
|
||||||
|
this.redisPassword = ((String) prop.getOrDefault("redis-password", null));
|
||||||
|
|
||||||
|
if (this.redisPassword.isEmpty()) {
|
||||||
|
this.redisPassword = null;
|
||||||
|
}
|
||||||
|
} catch (IOException io) {
|
||||||
|
io.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (input != null) {
|
||||||
|
try {
|
||||||
|
input.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.minexd.quartz.log;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
public class Logger {
|
||||||
|
|
||||||
|
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
|
||||||
|
|
||||||
|
public static void print(String message) {
|
||||||
|
System.out.println("[" + DATE_FORMAT.format(Calendar.getInstance().getTime()) + "] [Quartz] " + message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,110 @@
|
||||||
|
package com.minexd.quartz.network;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.handler.IncomingPacketHandler;
|
||||||
|
import com.minexd.pidgin.packet.listener.PacketListener;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovePacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovedPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerUpdatePacket;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.UUID;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.log.Logger;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayer;
|
||||||
|
import com.minexd.quartz.server.Server;
|
||||||
|
|
||||||
|
public class NetworkListener implements PacketListener {
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onPlayerAddPacket(PlayerAddPacket packet) {
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByName(packet.getData().get("queue").getAsString());
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
JsonObject playerObject = packet.getData().get("player").getAsJsonObject();
|
||||||
|
QueuePlayer player = new QueuePlayer(playerObject);
|
||||||
|
|
||||||
|
if (Quartz.get().getQuartzData().getQueueByPlayer(player.getUuid()) != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.setInserted(System.currentTimeMillis());
|
||||||
|
|
||||||
|
queue.getPlayers().add(player);
|
||||||
|
|
||||||
|
playerObject.addProperty("inserted-at", player.getInserted());
|
||||||
|
packet.getData().add("player", playerObject);
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerAddedPacket(packet.getData()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onPlayerRemovePacket(PlayerRemovePacket packet) {
|
||||||
|
UUID uuid = UUID.fromString(packet.getData().get("uuid").getAsString());
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByPlayer(uuid);
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
QueuePlayer queuePlayer = null;
|
||||||
|
|
||||||
|
Iterator<QueuePlayer> iterator = queue.getPlayers().iterator();
|
||||||
|
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
QueuePlayer other = iterator.next();
|
||||||
|
|
||||||
|
if (other.getUuid().equals(uuid)) {
|
||||||
|
queuePlayer = other;
|
||||||
|
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (queuePlayer != null) {
|
||||||
|
JsonObject rankObject = new JsonObject();
|
||||||
|
rankObject.addProperty("name", queuePlayer.getRank().getName());
|
||||||
|
rankObject.addProperty("priority", queuePlayer.getRank().getPriority());
|
||||||
|
|
||||||
|
JsonObject playerObject = new JsonObject();
|
||||||
|
playerObject.addProperty("uuid", queuePlayer.getUuid().toString());
|
||||||
|
playerObject.addProperty("inserted-at", queuePlayer.getInserted());
|
||||||
|
playerObject.add("rank", rankObject);
|
||||||
|
|
||||||
|
JsonObject data = new JsonObject();
|
||||||
|
data.addProperty("queue", queue.getName());
|
||||||
|
data.add("player", playerObject);
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerRemovedPacket(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onServerUpdatePacket(ServerUpdatePacket packet) {
|
||||||
|
String serverId = packet.getData().get("id").getAsString();
|
||||||
|
Server server = Quartz.get().getQuartzData().getServerById(serverId);
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByName(serverId);
|
||||||
|
|
||||||
|
if (server == null) {
|
||||||
|
server = new Server(serverId);
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
queue.setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.print("Initiated server `" + serverId + "`");
|
||||||
|
}
|
||||||
|
|
||||||
|
server.setName(packet.getData().get("name").getAsString());
|
||||||
|
server.setOnlinePlayers(packet.getData().get("online-players").getAsInt());
|
||||||
|
server.setMaximumPlayers(packet.getData().get("maximum-players").getAsInt());
|
||||||
|
server.setWhitelisted(packet.getData().get("whitelisted").getAsBoolean());
|
||||||
|
server.setPort(packet.getData().get("port").getAsInt());
|
||||||
|
server.setMetadata(packet.getData().get("metadata").getAsJsonObject());
|
||||||
|
server.setLastUpdate(System.currentTimeMillis());
|
||||||
|
|
||||||
|
Logger.print("Updated server `" + serverId + "`");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package com.minexd.quartz.thread;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.quartz.log.Logger;
|
||||||
|
import com.minexd.quartz.packet.QueueListPacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayer;
|
||||||
|
|
||||||
|
public class BroadcastThread extends Thread {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
JsonArray queues = new JsonArray();
|
||||||
|
|
||||||
|
for (Queue queue : Quartz.get().getQuartzData().getQueues()) {
|
||||||
|
JsonArray players = new JsonArray();
|
||||||
|
|
||||||
|
for (QueuePlayer player : queue.getPlayers()) {
|
||||||
|
JsonObject rankObject = new JsonChain()
|
||||||
|
.addProperty("name", player.getRank().getName())
|
||||||
|
.addProperty("priority", player.getRank().getPriority())
|
||||||
|
.get();
|
||||||
|
|
||||||
|
JsonObject playerObject = new JsonChain()
|
||||||
|
.addProperty("uuid", player.getUuid().toString())
|
||||||
|
.addProperty("inserted-at", player.getInserted())
|
||||||
|
.add("rank", rankObject)
|
||||||
|
.get();
|
||||||
|
|
||||||
|
players.add(playerObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
JsonObject queueObject = new JsonObject();
|
||||||
|
queueObject.addProperty("id", queue.getName());
|
||||||
|
queueObject.addProperty("status", queue.isEnabled());
|
||||||
|
queueObject.add("players", players);
|
||||||
|
|
||||||
|
queues.add(queueObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new QueueListPacket(queues));
|
||||||
|
|
||||||
|
Logger.print("Broadcast server and queue list");
|
||||||
|
|
||||||
|
Thread.sleep(5000L);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.minexd.quartz.thread;
|
||||||
|
|
||||||
|
import com.minexd.quartz.packet.PlayerSendPacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.server.Server;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayer;
|
||||||
|
|
||||||
|
public class QueueThread extends Thread {
|
||||||
|
|
||||||
|
private static final Long SEND_DELAY = 500L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
while (true) {
|
||||||
|
try {
|
||||||
|
for (Queue queue : Quartz.get().getQuartzData().getQueues()) {
|
||||||
|
if (!this.canSend(queue)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueuePlayer next = queue.getPlayers().poll();
|
||||||
|
|
||||||
|
if (next != null) {
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerSendPacket(new JsonChain()
|
||||||
|
.addProperty("server", queue.getName())
|
||||||
|
.addProperty("uuid", next.getUuid().toString())
|
||||||
|
.get()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Thread.sleep(SEND_DELAY);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean canSend(Queue queue) {
|
||||||
|
if (queue.isEnabled()) {
|
||||||
|
Server server = Quartz.get().getQuartzData().getServerById(queue.getName());
|
||||||
|
|
||||||
|
if (server != null) {
|
||||||
|
return server.isOnline() && !server.isWhitelisted() &&
|
||||||
|
server.getOnlinePlayers() < server.getMaximumPlayers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
#Created by Apache Maven 3.3.9
|
||||||
|
version=1.0-SNAPSHOT
|
||||||
|
groupId=com.minexd.quartz
|
||||||
|
artifactId=application
|
|
@ -0,0 +1,6 @@
|
||||||
|
com\minexd\quartz\file\Config.class
|
||||||
|
com\minexd\quartz\thread\QueueThread.class
|
||||||
|
com\minexd\quartz\network\NetworkListener.class
|
||||||
|
com\minexd\quartz\Quartz.class
|
||||||
|
com\minexd\quartz\thread\BroadcastThread.class
|
||||||
|
com\minexd\quartz\log\Logger.class
|
|
@ -0,0 +1,6 @@
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\thread\QueueThread.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\file\Config.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\log\Logger.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\network\NetworkListener.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\Quartz.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\application\src\main\java\com\minexd\quartz\thread\BroadcastThread.java
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
|
<output url="file://$MODULE_DIR$/target/classes" />
|
||||||
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.16" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.minexd:pidgin:1.0-SNAPSHOT" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>common</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>plugin.yml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<excludes>
|
||||||
|
<exclude>plugin.yml</exclude>
|
||||||
|
</excludes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<compilerArgument>-parameters</compilerArgument>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>2.4.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>common</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.16.16</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.code.gson</groupId>
|
||||||
|
<artifactId>gson</artifactId>
|
||||||
|
<version>LATEST</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.minexd</groupId>
|
||||||
|
<artifactId>pidgin</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<compilerArgument>-parameters</compilerArgument>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>2.4.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>plugin.yml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>false</filtering>
|
||||||
|
<excludes>
|
||||||
|
<exclude>plugin.yml</exclude>
|
||||||
|
</excludes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,103 @@
|
||||||
|
package com.minexd.quartz.data;
|
||||||
|
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.server.Server;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import lombok.Getter;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayer;
|
||||||
|
import redis.clients.jedis.Jedis;
|
||||||
|
import redis.clients.jedis.JedisPool;
|
||||||
|
import redis.clients.jedis.ScanParams;
|
||||||
|
import redis.clients.jedis.ScanResult;
|
||||||
|
|
||||||
|
public class QuartzData {
|
||||||
|
|
||||||
|
private final JedisPool jedisPool;
|
||||||
|
@Getter private final List<Server> servers = new ArrayList<>();
|
||||||
|
@Getter private final List<Queue> queues = new ArrayList<>();
|
||||||
|
|
||||||
|
public QuartzData(JedisPool jedisPool) {
|
||||||
|
this.jedisPool = jedisPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadServers() {
|
||||||
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
|
ScanResult<String> found = jedis.scan("0", new ScanParams().match("quartz:server-info").count(100));
|
||||||
|
|
||||||
|
for (String path : found.getResult()) {
|
||||||
|
String[] split = path.split(":");
|
||||||
|
int port = Integer.valueOf(split[2]);
|
||||||
|
|
||||||
|
Map<String, String> map = jedis.hgetAll(path);
|
||||||
|
|
||||||
|
if (map == null || map.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try and get the server if it is already cached
|
||||||
|
Server server = this.getServerById(map.get("id"));
|
||||||
|
|
||||||
|
// If not, create it
|
||||||
|
if (server == null) {
|
||||||
|
this.servers.add((server = new Server(map.get("id"))));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update fields
|
||||||
|
server.setName(map.get("name"));
|
||||||
|
server.setPort(port);
|
||||||
|
server.setOnlinePlayers(Integer.valueOf(map.get("online-players")));
|
||||||
|
server.setMaximumPlayers(Integer.valueOf(map.get("maximum-players")));
|
||||||
|
server.setWhitelisted(Boolean.valueOf(map.get("whitelisted")));
|
||||||
|
server.setMetadata(new JsonParser().parse(map.get("metadata")).getAsJsonObject());
|
||||||
|
server.setLastUpdate(Long.valueOf(map.get("last-update")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Server getServerById(String id) {
|
||||||
|
for (Server server : this.servers) {
|
||||||
|
if (server.getId().equalsIgnoreCase(id)) {
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Server getByPort(int port) {
|
||||||
|
for (Server server : this.servers) {
|
||||||
|
if (server.getPort() == port) {
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Queue getQueueByName(String name) {
|
||||||
|
for (Queue queue : this.queues) {
|
||||||
|
if (queue.getName().equalsIgnoreCase(name)) {
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Queue getQueueByPlayer(UUID uuid) {
|
||||||
|
for (Queue queue : this.queues) {
|
||||||
|
for (QueuePlayer queuePlayer : queue.getPlayers()) {
|
||||||
|
if (queuePlayer.getUuid().equals(uuid)) {
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class PlayerAddPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class PlayerAddedPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class PlayerRemovePacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class PlayerRemovedPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class PlayerSendPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class QueueListPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonArray data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return new JsonChain().add("data", data).get();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object.getAsJsonArray("data");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class ServerMetadataPacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.minexd.quartz.packet;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.Packet;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public class ServerUpdatePacket implements Packet {
|
||||||
|
|
||||||
|
private JsonObject data;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int id() {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject serialize() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deserialize(JsonObject object) {
|
||||||
|
data = object;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.minexd.quartz.queue;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class Queue {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
@Setter
|
||||||
|
private PriorityQueue<QueuePlayer> players = new PriorityQueue<>(new QueuePlayerComparator());
|
||||||
|
@Setter
|
||||||
|
private boolean enabled;
|
||||||
|
|
||||||
|
public Queue(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean containsPlayer(UUID uuid) {
|
||||||
|
for (QueuePlayer player : this.players) {
|
||||||
|
if (player.getUuid().equals(uuid)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPosition(UUID uuid) {
|
||||||
|
if (!this.containsPlayer(uuid)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
PriorityQueue<QueuePlayer> queue = new PriorityQueue<>(this.players);
|
||||||
|
|
||||||
|
int position = 0;
|
||||||
|
|
||||||
|
while (!queue.isEmpty()) {
|
||||||
|
QueuePlayer player = queue.poll();
|
||||||
|
|
||||||
|
if (player.getUuid().equals(uuid)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
position++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return position + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.minexd.quartz.queue;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class QueuePlayer implements Comparable {
|
||||||
|
|
||||||
|
private UUID uuid;
|
||||||
|
private QueueRank rank;
|
||||||
|
private long inserted;
|
||||||
|
|
||||||
|
public QueuePlayer(JsonObject object) {
|
||||||
|
this.uuid = UUID.fromString(object.get("uuid").getAsString());
|
||||||
|
this.rank = new QueueRank(object.get("rank").getAsJsonObject());
|
||||||
|
|
||||||
|
if (object.has("inserted-at")) {
|
||||||
|
this.inserted = object.get("inserted-at").getAsLong();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Object object) {
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
if (object instanceof QueuePlayer) {
|
||||||
|
QueuePlayer otherPlayer = (QueuePlayer) object;
|
||||||
|
result = this.rank.getPriority() - otherPlayer.getRank().getPriority();
|
||||||
|
|
||||||
|
if (result == 0) {
|
||||||
|
if (this.inserted < otherPlayer.getInserted()) {
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.minexd.quartz.queue;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
public class QueuePlayerComparator implements Comparator<QueuePlayer> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compare(QueuePlayer firstPlayer, QueuePlayer secondPlayer) {
|
||||||
|
return firstPlayer.compareTo(secondPlayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.minexd.quartz.queue;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class QueueRank implements Comparable {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private int priority;
|
||||||
|
|
||||||
|
public QueueRank(JsonObject object) {
|
||||||
|
this.name = object.get("name").getAsString();
|
||||||
|
this.priority = object.get("priority").getAsInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Object o) {
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
if (o instanceof QueueRank) {
|
||||||
|
result = this.priority - ((QueueRank) o).priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
package com.minexd.quartz.server;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class Server {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String name;
|
||||||
|
private int onlinePlayers;
|
||||||
|
private int maximumPlayers;
|
||||||
|
private boolean whitelisted;
|
||||||
|
private int port;
|
||||||
|
private JsonObject metadata;
|
||||||
|
private long lastUpdate;
|
||||||
|
|
||||||
|
public Server(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isOnline() {
|
||||||
|
return System.currentTimeMillis() - this.lastUpdate <= 15_000L;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.minexd.quartz.server;
|
||||||
|
|
||||||
|
public enum ServerType {
|
||||||
|
|
||||||
|
PRACTICE,
|
||||||
|
HCFACTIONS,
|
||||||
|
UHC_MEETUP,
|
||||||
|
POTION_SG;
|
||||||
|
|
||||||
|
private String readable;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package com.minexd.quartz.util;
|
||||||
|
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
|
||||||
|
public class JsonChain {
|
||||||
|
|
||||||
|
private JsonObject json = new JsonObject();
|
||||||
|
|
||||||
|
public JsonChain addProperty(String property, String value) {
|
||||||
|
this.json.addProperty(property, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonChain addProperty(String property, Number value) {
|
||||||
|
this.json.addProperty(property, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonChain addProperty(String property, Boolean value) {
|
||||||
|
this.json.addProperty(property, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonChain addProperty(String property, Character value) {
|
||||||
|
this.json.addProperty(property, value);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonChain add(String property, JsonElement element) {
|
||||||
|
this.json.add(property, element);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonObject get() {
|
||||||
|
return this.json;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.minexd.quartz.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class MapUtil {
|
||||||
|
|
||||||
|
public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
|
||||||
|
List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());
|
||||||
|
list.sort(Map.Entry.comparingByValue());
|
||||||
|
|
||||||
|
Map<K, V> result = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
for (Map.Entry<K, V> entry : list) {
|
||||||
|
result.put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
#Generated by Maven
|
||||||
|
#Fri Nov 23 23:38:54 EST 2018
|
||||||
|
version=1.0-SNAPSHOT
|
||||||
|
groupId=com.minexd.quartz
|
||||||
|
artifactId=common
|
|
@ -0,0 +1,17 @@
|
||||||
|
com\minexd\quartz\util\MapUtil.class
|
||||||
|
com\minexd\quartz\packet\PlayerSendPacket.class
|
||||||
|
com\minexd\quartz\packet\PlayerRemovePacket.class
|
||||||
|
com\minexd\quartz\data\QuartzData.class
|
||||||
|
com\minexd\quartz\packet\PlayerRemovedPacket.class
|
||||||
|
com\minexd\quartz\packet\QueueListPacket.class
|
||||||
|
com\minexd\quartz\server\ServerType.class
|
||||||
|
com\minexd\quartz\queue\QueuePlayer.class
|
||||||
|
com\minexd\quartz\queue\QueueRank.class
|
||||||
|
com\minexd\quartz\packet\PlayerAddedPacket.class
|
||||||
|
com\minexd\quartz\packet\PlayerAddPacket.class
|
||||||
|
com\minexd\quartz\util\JsonChain.class
|
||||||
|
com\minexd\quartz\packet\ServerMetadataPacket.class
|
||||||
|
com\minexd\quartz\queue\QueuePlayerComparator.class
|
||||||
|
com\minexd\quartz\packet\ServerUpdatePacket.class
|
||||||
|
com\minexd\quartz\queue\Queue.class
|
||||||
|
com\minexd\quartz\server\Server.class
|
|
@ -0,0 +1,17 @@
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\server\ServerType.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\PlayerAddPacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\QueueListPacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\server\Server.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\queue\QueuePlayer.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\util\MapUtil.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\queue\QueueRank.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\PlayerAddedPacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\queue\Queue.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\queue\QueuePlayerComparator.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\data\QuartzData.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\PlayerRemovePacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\util\JsonChain.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\ServerMetadataPacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\ServerUpdatePacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\PlayerRemovedPacket.java
|
||||||
|
C:\Users\skruf\Documents\Projects\MineXD\quartz-parent\common\src\main\java\com\minexd\quartz\packet\PlayerSendPacket.java
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,90 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>plugin</artifactId>
|
||||||
|
<build>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>plugin.yml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<excludes>
|
||||||
|
<exclude>plugin.yml</exclude>
|
||||||
|
</excludes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<compilerArgument>-parameters</compilerArgument>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>2.4.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>md5-repo</id>
|
||||||
|
<url>http://repo.md-5.net/content/groups/public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>commons-lang</artifactId>
|
||||||
|
<groupId>commons-lang</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>json-simple</artifactId>
|
||||||
|
<groupId>com.googlecode.json-simple</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>ebean</artifactId>
|
||||||
|
<groupId>org.avaje</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>snakeyaml</artifactId>
|
||||||
|
<groupId>org.yaml</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>bungeecord-chat</artifactId>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||||
|
<output url="file://$MODULE_DIR$/target/classes" />
|
||||||
|
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.8.8-R0.1-SNAPSHOT" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:4.10" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:17.0" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.avaje:ebean:2.8.1" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.8-SNAPSHOT" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.16.16" level="project" />
|
||||||
|
<orderEntry type="module" module-name="common" />
|
||||||
|
<orderEntry type="library" name="Maven: com.minexd:pidgin:1.0-SNAPSHOT" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.qrakn:phoenix-lang:1.0-SNAPSHOT" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: com.qrakn:honcho:1.0-SNAPSHOT" level="project" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -0,0 +1,97 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<artifactId>quartz-parent</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>plugin</artifactId>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>md5-repo</id>
|
||||||
|
<url>http://repo.md-5.net/content/groups/public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.8.8-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.16.16</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.minexd.quartz</groupId>
|
||||||
|
<artifactId>common</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.qrakn</groupId>
|
||||||
|
<artifactId>phoenix-lang</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.qrakn</groupId>
|
||||||
|
<artifactId>honcho</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
<compilerArgument>-parameters</compilerArgument>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>2.4.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>plugin.yml</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>false</filtering>
|
||||||
|
<excludes>
|
||||||
|
<exclude>plugin.yml</exclude>
|
||||||
|
</excludes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.minexd.quartz;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum Locale {
|
||||||
|
|
||||||
|
JOINED_QUEUE("QUEUE.JOINED"),
|
||||||
|
LEFT_QUEUE("QUEUE.LEFT"),
|
||||||
|
REMINDER("QUEUE.REMINDER"),
|
||||||
|
SENDING("QUEUE.SENDING");
|
||||||
|
|
||||||
|
private String path;
|
||||||
|
|
||||||
|
public void send(CommandSender sender, Object... objects) {
|
||||||
|
if (Quartz.get().getMainConfig().get(path) instanceof String) {
|
||||||
|
sender.sendMessage(new MessageFormat(ChatColor.translateAlternateColorCodes('&',
|
||||||
|
Quartz.get().getMainConfig().getString(path))).format(objects));
|
||||||
|
} else {
|
||||||
|
for (String string : Quartz.get().getMainConfig().getStringList(path)) {
|
||||||
|
sender.sendMessage(new MessageFormat(ChatColor.translateAlternateColorCodes('&', string))
|
||||||
|
.format(objects));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
package com.minexd.quartz;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import com.minexd.pidgin.Pidgin;
|
||||||
|
import com.minexd.quartz.command.JoinQueueCommand;
|
||||||
|
import com.minexd.quartz.command.LeaveQueueCommand;
|
||||||
|
import com.minexd.quartz.command.adapter.QueueTypeAdapter;
|
||||||
|
import com.minexd.quartz.network.NetworkListener;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovePacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerSendPacket;
|
||||||
|
import com.minexd.quartz.packet.QueueListPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerMetadataPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerUpdatePacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import com.qrakn.honcho.Honcho;
|
||||||
|
import com.qrakn.phoenix.lang.file.type.BasicConfigurationFile;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import com.minexd.quartz.data.QuartzData;
|
||||||
|
import com.minexd.quartz.priority.Priority;
|
||||||
|
import com.minexd.quartz.priority.impl.DefaultPriority;
|
||||||
|
import com.minexd.quartz.task.ReminderTask;
|
||||||
|
import com.minexd.quartz.task.UpdateTask;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import redis.clients.jedis.Jedis;
|
||||||
|
import redis.clients.jedis.JedisPool;
|
||||||
|
|
||||||
|
public class Quartz extends JavaPlugin {
|
||||||
|
|
||||||
|
private static Quartz quartz;
|
||||||
|
|
||||||
|
@Getter private BasicConfigurationFile mainConfig;
|
||||||
|
@Getter private JedisPool jedisPool;
|
||||||
|
@Getter private Honcho honcho;
|
||||||
|
@Getter private Pidgin pidgin;
|
||||||
|
@Getter private QuartzData quartzData;
|
||||||
|
@Getter @Setter private Priority priority;
|
||||||
|
|
||||||
|
@Getter private String serverId;
|
||||||
|
@Getter private String serverName;
|
||||||
|
@Getter private JsonObject metadata = new JsonObject();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
quartz = this;
|
||||||
|
|
||||||
|
mainConfig = new BasicConfigurationFile(this, "config");
|
||||||
|
|
||||||
|
final String redisHost = mainConfig.getString("REDIS.HOST");
|
||||||
|
final int redisPort = mainConfig.getInteger("REDIS.PORT");
|
||||||
|
final String redisPassword;
|
||||||
|
|
||||||
|
if (mainConfig.getBoolean("REDIS.AUTHENTICATION.ENABLED")) {
|
||||||
|
redisPassword = mainConfig.getString("REDIS.AUTHENTICATION.PASSWORD");
|
||||||
|
} else {
|
||||||
|
redisPassword = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
jedisPool = new JedisPool(redisHost, redisPort);
|
||||||
|
|
||||||
|
if (redisPassword != null) {
|
||||||
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
|
jedis.auth(redisPassword);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadQuartzData();
|
||||||
|
|
||||||
|
honcho = new Honcho(this);
|
||||||
|
honcho.registerCommand(new JoinQueueCommand());
|
||||||
|
honcho.registerCommand(new LeaveQueueCommand());
|
||||||
|
honcho.registerTypeAdapter(Queue.class, new QueueTypeAdapter());
|
||||||
|
|
||||||
|
pidgin = new Pidgin("quartz", redisHost, redisPort, redisPassword);
|
||||||
|
pidgin.registerListener(new NetworkListener());
|
||||||
|
|
||||||
|
Arrays.asList(
|
||||||
|
PlayerAddedPacket.class,
|
||||||
|
PlayerAddPacket.class,
|
||||||
|
PlayerRemovedPacket.class,
|
||||||
|
PlayerRemovePacket.class,
|
||||||
|
PlayerSendPacket.class,
|
||||||
|
QueueListPacket.class,
|
||||||
|
ServerMetadataPacket.class,
|
||||||
|
ServerUpdatePacket.class
|
||||||
|
).forEach(pidgin::registerPacket);
|
||||||
|
|
||||||
|
quartzData = new QuartzData(jedisPool);
|
||||||
|
quartzData.loadServers();
|
||||||
|
|
||||||
|
priority = new DefaultPriority();
|
||||||
|
|
||||||
|
new ReminderTask().runTaskTimerAsynchronously(this, 0L, 20L * 10L);
|
||||||
|
new UpdateTask().runTaskTimerAsynchronously(this, 0L, 20L * 3L);
|
||||||
|
|
||||||
|
getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
|
||||||
|
getServer().getPluginManager().registerEvents(new Listener() {
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerRemovePacket(new JsonChain()
|
||||||
|
.addProperty("uuid", event.getPlayer().getUniqueId().toString())
|
||||||
|
.get()));
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadQuartzData() {
|
||||||
|
serverId = mainConfig.getString("SETTINGS.SERVER_ID");
|
||||||
|
serverName = mainConfig.getString("SETTINGS.SERVER_NAME");
|
||||||
|
|
||||||
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
|
String key = "quartz:server-info:" + Bukkit.getPort();
|
||||||
|
|
||||||
|
if (jedis.exists(key)) {
|
||||||
|
Map<String, String> map = jedis.hgetAll(key);
|
||||||
|
|
||||||
|
serverId = map.get("id");
|
||||||
|
serverName = map.get("name");
|
||||||
|
metadata = new JsonParser().parse(map.get("metadata")).getAsJsonObject();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metadata == null || metadata.isJsonNull()) {
|
||||||
|
metadata = new JsonObject();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Quartz get() {
|
||||||
|
return quartz;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
package com.minexd.quartz.command;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerSendPacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.queue.QueueRank;
|
||||||
|
import com.minexd.quartz.server.Server;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import com.qrakn.honcho.command.CPL;
|
||||||
|
import com.qrakn.honcho.command.CommandMeta;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandMeta(label = "joinqueue", async = true)
|
||||||
|
public class JoinQueueCommand {
|
||||||
|
|
||||||
|
public void execute(Player player, @CPL("queue") Queue queue) {
|
||||||
|
if (queue == null) {
|
||||||
|
player.sendMessage(ChatColor.RED + "A queue with that name does not exist.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Server server = Quartz.get().getQuartzData().getServerById(queue.getName());
|
||||||
|
|
||||||
|
if (server == null || !server.isOnline()) {
|
||||||
|
player.sendMessage(ChatColor.RED + "That queue is offline.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Quartz.get().getQuartzData().getQueueByPlayer(player.getUniqueId()) != null) {
|
||||||
|
player.sendMessage(ChatColor.RED + "You are already in a queue!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (player.hasPermission("quartz.bypass")) {
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerSendPacket(new JsonChain()
|
||||||
|
.addProperty("server", queue.getName())
|
||||||
|
.addProperty("uuid", player.getUniqueId().toString())
|
||||||
|
.get()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueueRank queueRank = Quartz.get().getPriority().getRank(player);
|
||||||
|
|
||||||
|
JsonObject rankObject = new JsonChain()
|
||||||
|
.addProperty("name", queueRank.getName())
|
||||||
|
.addProperty("priority", queueRank.getPriority())
|
||||||
|
.get();
|
||||||
|
|
||||||
|
JsonObject playerObject = new JsonChain()
|
||||||
|
.addProperty("uuid", player.getUniqueId().toString())
|
||||||
|
.add("rank", rankObject)
|
||||||
|
.get();
|
||||||
|
|
||||||
|
JsonObject data = new JsonChain()
|
||||||
|
.addProperty("queue", queue.getName())
|
||||||
|
.add("player", playerObject)
|
||||||
|
.get();
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerAddPacket(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.minexd.quartz.command;
|
||||||
|
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovePacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import com.qrakn.honcho.command.CommandMeta;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandMeta(label = "leavequeue", async = true)
|
||||||
|
public class LeaveQueueCommand {
|
||||||
|
|
||||||
|
public void execute(Player player) {
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByPlayer(player.getUniqueId());
|
||||||
|
|
||||||
|
if (queue == null) {
|
||||||
|
player.sendMessage(ChatColor.RED + "You are not in a queue!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new PlayerRemovePacket(new JsonChain()
|
||||||
|
.addProperty("uuid", player.getUniqueId().toString())
|
||||||
|
.get()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.minexd.quartz.command.adapter;
|
||||||
|
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.qrakn.honcho.command.adapter.CommandTypeAdapter;
|
||||||
|
|
||||||
|
public class QueueTypeAdapter implements CommandTypeAdapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T convert(String string, Class<T> type) {
|
||||||
|
return type.cast(Quartz.get().getQuartzData().getQueueByName(string));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
package com.minexd.quartz.network;
|
||||||
|
|
||||||
|
import com.google.gson.JsonArray;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.pidgin.packet.handler.IncomingPacketHandler;
|
||||||
|
import com.minexd.pidgin.packet.listener.PacketListener;
|
||||||
|
import com.minexd.quartz.Locale;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.packet.PlayerAddedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerRemovedPacket;
|
||||||
|
import com.minexd.quartz.packet.PlayerSendPacket;
|
||||||
|
import com.minexd.quartz.packet.QueueListPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerMetadataPacket;
|
||||||
|
import com.minexd.quartz.packet.ServerUpdatePacket;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayer;
|
||||||
|
import com.minexd.quartz.queue.QueuePlayerComparator;
|
||||||
|
import com.minexd.quartz.server.Server;
|
||||||
|
import com.minexd.quartz.util.BungeeUtil;
|
||||||
|
import java.util.PriorityQueue;
|
||||||
|
import java.util.UUID;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class NetworkListener implements PacketListener {
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onPlayerAddedPacket(PlayerAddedPacket packet) {
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByName(packet.getData().get("queue").getAsString());
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
QueuePlayer queuePlayer = new QueuePlayer(packet.getData().get("player").getAsJsonObject());
|
||||||
|
Player player = Bukkit.getPlayer(queuePlayer.getUuid());
|
||||||
|
|
||||||
|
queue.getPlayers().add(queuePlayer);
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
Locale.JOINED_QUEUE.send(player, queue.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onPlayerRemovedPacket(PlayerRemovedPacket packet) {
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByName(packet.getData().get("queue").getAsString());
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
QueuePlayer queuePlayer = new QueuePlayer(packet.getData().get("player").getAsJsonObject());
|
||||||
|
Player player = Bukkit.getPlayer(queuePlayer.getUuid());
|
||||||
|
|
||||||
|
queue.getPlayers().removeIf(check -> check.getUuid().equals(player.getUniqueId()));
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
Locale.LEFT_QUEUE.send(player, queue.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onPlayerSendPacket(PlayerSendPacket packet) {
|
||||||
|
Player player = Bukkit.getPlayer(UUID.fromString(packet.getData().get("uuid").getAsString()));
|
||||||
|
|
||||||
|
if (player != null) {
|
||||||
|
final String server = packet.getData().get("server").getAsString();
|
||||||
|
|
||||||
|
Locale.SENDING.send(player, packet.getData().get("server").getAsString());
|
||||||
|
BungeeUtil.sendToServer(player, server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onQueueListPacket(QueueListPacket packet) {
|
||||||
|
if (!Quartz.get().getMainConfig().getBoolean("SETTINGS.CACHE_SERVERS")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JsonArray array = packet.getData();
|
||||||
|
|
||||||
|
for (JsonElement queueElement : array) {
|
||||||
|
JsonObject queueObject = queueElement.getAsJsonObject();
|
||||||
|
final String queueName = queueObject.get("id").getAsString();
|
||||||
|
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByName(queueName);
|
||||||
|
|
||||||
|
if (queue == null) {
|
||||||
|
queue = new Queue(queueName);
|
||||||
|
Quartz.get().getQuartzData().getQueues().add(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
PriorityQueue<QueuePlayer> players = new PriorityQueue<>(new QueuePlayerComparator());
|
||||||
|
|
||||||
|
for (JsonElement playerElement : queueObject.get("players").getAsJsonArray()) {
|
||||||
|
QueuePlayer player = new QueuePlayer(playerElement.getAsJsonObject());
|
||||||
|
players.add(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
queue.setPlayers(players);
|
||||||
|
queue.setEnabled(queueObject.get("status").getAsBoolean());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onServerMetadata(ServerMetadataPacket packet) {
|
||||||
|
Server server = Quartz.get().getQuartzData().getServerById(packet.getData().get("id").getAsString());
|
||||||
|
|
||||||
|
if (server != null) {
|
||||||
|
server.getMetadata().add(packet.getData().get("field").getAsString(), packet.getData().get("value"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@IncomingPacketHandler
|
||||||
|
public void onServerUpdate(ServerUpdatePacket packet) {
|
||||||
|
String serverId = packet.getData().get("id").getAsString();
|
||||||
|
|
||||||
|
if (Quartz.get().getMainConfig().getBoolean("SETTINGS.CACHE_SERVERS")) {
|
||||||
|
Server server = Quartz.get().getQuartzData().getServerById(serverId);
|
||||||
|
|
||||||
|
if (server == null) {
|
||||||
|
server = new Server(serverId);
|
||||||
|
Quartz.get().getQuartzData().getServers().add(server);
|
||||||
|
}
|
||||||
|
|
||||||
|
server.setName(packet.getData().get("name").getAsString());
|
||||||
|
server.setOnlinePlayers(packet.getData().get("online-players").getAsInt());
|
||||||
|
server.setMaximumPlayers(packet.getData().get("maximum-players").getAsInt());
|
||||||
|
server.setWhitelisted(packet.getData().get("whitelisted").getAsBoolean());
|
||||||
|
server.setPort(packet.getData().get("port").getAsInt());
|
||||||
|
server.setMetadata(packet.getData().get("metadata").getAsJsonObject());
|
||||||
|
server.setLastUpdate(System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.minexd.quartz.priority;
|
||||||
|
|
||||||
|
import com.minexd.quartz.queue.QueueRank;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public interface Priority {
|
||||||
|
|
||||||
|
QueueRank getRank(Player player);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
package com.minexd.quartz.priority.impl;
|
||||||
|
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.queue.QueueRank;
|
||||||
|
import com.minexd.quartz.util.MapUtil;
|
||||||
|
import com.minexd.quartz.priority.Priority;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class DefaultPriority implements Priority {
|
||||||
|
|
||||||
|
private QueueRank defaultPriority;
|
||||||
|
private Map<String, QueueRank> priorities = new HashMap<>();
|
||||||
|
|
||||||
|
public DefaultPriority() {
|
||||||
|
FileConfiguration config = Quartz.get().getMainConfig().getConfiguration();
|
||||||
|
|
||||||
|
try {
|
||||||
|
this.defaultPriority = new QueueRank("Default", 1);
|
||||||
|
|
||||||
|
if (config.contains("priority.default")) {
|
||||||
|
this.defaultPriority.setPriority(config.getInt("priority.default"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.contains("priority.ranks") && config.isConfigurationSection("priority.ranks")) {
|
||||||
|
for (String rank : config.getConfigurationSection("priority.ranks").getKeys(false)) {
|
||||||
|
String path = "priority.ranks." + rank;
|
||||||
|
|
||||||
|
if (config.contains(path + ".priority") && config.contains(path + ".permission")) {
|
||||||
|
this.priorities.put(config.getString(path + ".permission"), new QueueRank(rank, config.getInt
|
||||||
|
(path + ".priority")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.priorities = MapUtil.sortByValue(this.priorities);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public QueueRank getRank(Player player) {
|
||||||
|
for (Map.Entry<String, QueueRank> entry : this.priorities.entrySet()) {
|
||||||
|
if (player.hasPermission(entry.getKey())) {
|
||||||
|
return entry.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.defaultPriority;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.minexd.quartz.task;
|
||||||
|
|
||||||
|
import com.minexd.quartz.Locale;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.queue.Queue;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
|
public class ReminderTask extends BukkitRunnable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
Queue queue = Quartz.get().getQuartzData().getQueueByPlayer(player.getUniqueId());
|
||||||
|
|
||||||
|
if (queue != null) {
|
||||||
|
Locale.SENDING.send(player, queue.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package com.minexd.quartz.task;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import com.minexd.quartz.packet.ServerUpdatePacket;
|
||||||
|
import com.minexd.quartz.util.JsonChain;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import redis.clients.jedis.Jedis;
|
||||||
|
|
||||||
|
public class UpdateTask extends BukkitRunnable {
|
||||||
|
|
||||||
|
private Quartz quartz = Quartz.get();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
// Update server info in redis
|
||||||
|
{
|
||||||
|
try (Jedis jedis = Quartz.get().getJedisPool().getResource()) {
|
||||||
|
final String infoKey = "quartz:server-info:" + Bukkit.getPort();
|
||||||
|
|
||||||
|
jedis.hset(infoKey, "id", quartz.getServerId());
|
||||||
|
jedis.hset(infoKey, "name", quartz.getServerName());
|
||||||
|
jedis.hset(infoKey, "port", "" + Bukkit.getPort());
|
||||||
|
jedis.hset(infoKey, "online-players", Bukkit.getOnlinePlayers().size() + "");
|
||||||
|
jedis.hset(infoKey, "maximum-players", Bukkit.getMaxPlayers() + "");
|
||||||
|
jedis.hset(infoKey, "whitelisted", Bukkit.hasWhitelist() + "");
|
||||||
|
jedis.hset(infoKey, "metadata", quartz.getMetadata().toString());
|
||||||
|
jedis.hset(infoKey, "last-update", System.currentTimeMillis() + "");
|
||||||
|
|
||||||
|
// Update server lookup data
|
||||||
|
jedis.hset("quartz:lookup:port", "" + Bukkit.getPort(), quartz.getServerId());
|
||||||
|
jedis.hset("quartz:lookup:id", quartz.getServerId(), Bukkit.getPort() + "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Broadcast server info to other Quartz instances
|
||||||
|
{
|
||||||
|
JsonObject data = new JsonChain()
|
||||||
|
.addProperty("id", quartz.getServerId())
|
||||||
|
.addProperty("name", quartz.getServerName())
|
||||||
|
.addProperty("online-players", Bukkit.getOnlinePlayers().size())
|
||||||
|
.addProperty("maximum-players", Bukkit.getMaxPlayers())
|
||||||
|
.addProperty("whitelisted", Bukkit.hasWhitelist())
|
||||||
|
.addProperty("port", Bukkit.getPort())
|
||||||
|
.add("metadata", quartz.getMetadata())
|
||||||
|
.get();
|
||||||
|
|
||||||
|
Quartz.get().getPidgin().sendPacket(new ServerUpdatePacket(data));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package com.minexd.quartz.util;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataOutput;
|
||||||
|
import com.google.common.io.ByteStreams;
|
||||||
|
import com.minexd.quartz.Quartz;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public final class BungeeUtil {
|
||||||
|
|
||||||
|
private BungeeUtil() {
|
||||||
|
throw new RuntimeException("Cannot instantiate a utility class.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void sendToServer(Player player, String server) {
|
||||||
|
try {
|
||||||
|
ByteArrayDataOutput out = ByteStreams.newDataOutput();
|
||||||
|
out.writeUTF("Connect");
|
||||||
|
out.writeUTF(server);
|
||||||
|
|
||||||
|
player.sendPluginMessage(Quartz.get(), "BungeeCord", out.toByteArray());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
REDIS:
|
||||||
|
HOST: "127.0.0.1"
|
||||||
|
PORT: 6379
|
||||||
|
AUTHENTICATION:
|
||||||
|
ENABLED: false
|
||||||
|
PASSWORD: ""
|
||||||
|
SETTINGS:
|
||||||
|
SERVER_ID: "hub-1" # The server's unique ID
|
||||||
|
SERVER_NAME: "Hub" # The server's display name (not network name)
|
||||||
|
CACHE_SERVERS: true
|
||||||
|
PRIORITY:
|
||||||
|
DEFAULT: 1
|
||||||
|
RANKS:
|
||||||
|
Default:
|
||||||
|
PRIORITY: 1
|
||||||
|
PERMISSION: "ranks.default"
|
||||||
|
VIP:
|
||||||
|
PRIORITY: 2
|
||||||
|
PERMISSION: "ranks.vip"
|
||||||
|
MVP:
|
||||||
|
PRIORITY: 3
|
||||||
|
PERMISSION: "ranks.mvp"
|
||||||
|
QUEUE:
|
||||||
|
JOINED: "&aYou have joined the {0} queue."
|
||||||
|
LEFT: "&cYou have been removed from the {0} queue."
|
||||||
|
REMINDER:
|
||||||
|
- "&eYou are position &d#{0} &eof &d{1} &ein the &a{2} &equeue."
|
||||||
|
- "&7Purchase a rank at www.minexd.com to get a higher queue priority."
|
||||||
|
SENDING: "&aSending you to {0}..."
|
|
@ -0,0 +1,6 @@
|
||||||
|
main: com.minexd.quartz.Quartz
|
||||||
|
name: Quartz
|
||||||
|
author: joeleoli
|
||||||
|
version: ${project.version}
|
||||||
|
description: ${project.description}
|
||||||
|
depend: [ProtocolLib]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue