Merge branch 'commands'
This commit is contained in:
commit
b7260d318c
28 changed files with 204 additions and 658 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -218,7 +218,7 @@ pip-log.txt
|
||||||
.mr.developer.cfg
|
.mr.developer.cfg
|
||||||
.metadata/*
|
.metadata/*
|
||||||
TheButtonAutoFlair/out/artifacts/Autoflair/Autoflair.jar
|
TheButtonAutoFlair/out/artifacts/Autoflair/Autoflair.jar
|
||||||
#*.iml
|
*.iml
|
||||||
*.name
|
*.name
|
||||||
.idea
|
.idea
|
||||||
dependency-reduced-pom.xml
|
dependency-reduced-pom.xml
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<component name="ProjectCodeStyleConfiguration">
|
|
||||||
<state>
|
|
||||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
|
||||||
</state>
|
|
||||||
</component>
|
|
|
@ -1,87 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="CompilerConfiguration">
|
|
||||||
<annotationProcessing>
|
|
||||||
<profile default="true" name="Default" enabled="true" />
|
|
||||||
<profile name="Annotation profile for ButtonCore Parent" enabled="true">
|
|
||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
|
||||||
<outputRelativeToContentRoot value="true" />
|
|
||||||
<processor name="com.github.bsideup.jabel.JabelJavacProcessor" />
|
|
||||||
<processor name="lombok.launch.AnnotationProcessorHider$AnnotationProcessor" />
|
|
||||||
<processor name="buttondevteam.buttonproc.ButtonProcessor" />
|
|
||||||
<processorPath useClasspath="false">
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/github/bsideup/jabel/jabel-javac-plugin/0.2.0/jabel-javac-plugin-0.2.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.1/byte-buddy-1.10.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.1/byte-buddy-agent-1.10.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.10/lombok-1.18.10.jar" />
|
|
||||||
<entry name="$PROJECT_DIR$/ButtonProcessor/target/classes" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.21/snakeyaml-1.21.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.12.2-R0.1-SNAPSHOT/spigot-api-1.12.2-R0.1-SNAPSHOT.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/21.0/guava-21.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.12-SNAPSHOT/bungeecord-chat-1.12-20180712.114550-97.jar" />
|
|
||||||
</processorPath>
|
|
||||||
<module name="ButtonCore (1) (com.github.TBMCPlugins.ButtonCore)" />
|
|
||||||
</profile>
|
|
||||||
<profile name="Annotation profile for Chroma Parent" enabled="true">
|
|
||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
|
||||||
<outputRelativeToContentRoot value="true" />
|
|
||||||
<processorPath useClasspath="false">
|
|
||||||
<entry name="$PROJECT_DIR$/ButtonProcessor/target/classes" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.21/snakeyaml-1.21.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.12.2-R0.1-SNAPSHOT/spigot-api-1.12.2-R0.1-SNAPSHOT.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/21.0/guava-21.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.12-SNAPSHOT/bungeecord-chat-1.12-20180712.114550-97.jar" />
|
|
||||||
</processorPath>
|
|
||||||
<module name="BuildConfigUpdater" />
|
|
||||||
</profile>
|
|
||||||
<profile name="Annotation profile for Chroma-Core" enabled="true">
|
|
||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
|
||||||
<outputRelativeToContentRoot value="true" />
|
|
||||||
<processor name="com.github.bsideup.jabel.JabelJavacProcessor" />
|
|
||||||
<processor name="lombok.launch.AnnotationProcessorHider$AnnotationProcessor" />
|
|
||||||
<processor name="buttondevteam.buttonproc.ButtonProcessor" />
|
|
||||||
<processorPath useClasspath="false">
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/github/bsideup/jabel/jabel-javac-plugin/0.2.0/jabel-javac-plugin-0.2.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1.10.1/byte-buddy-1.10.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy-agent/1.10.1/byte-buddy-agent-1.10.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.10/lombok-1.18.10.jar" />
|
|
||||||
<entry name="$PROJECT_DIR$/ButtonProcessor/target/classes" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/yaml/snakeyaml/1.21/snakeyaml-1.21.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/org/spigotmc/spigot-api/1.12.2-R0.1-SNAPSHOT/spigot-api-1.12.2-R0.1-SNAPSHOT.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/21.0/guava-21.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar" />
|
|
||||||
<entry name="$MAVEN_REPOSITORY$/net/md-5/bungeecord-chat/1.12-SNAPSHOT/bungeecord-chat-1.12-20180712.114550-97.jar" />
|
|
||||||
</processorPath>
|
|
||||||
<module name="Chroma-Core" />
|
|
||||||
</profile>
|
|
||||||
</annotationProcessing>
|
|
||||||
<bytecodeTargetLevel>
|
|
||||||
<module name="BuildConfigUpdater" target="8" />
|
|
||||||
<module name="ButtonCore" target="1.5" />
|
|
||||||
<module name="ButtonCore (1) (com.github.TBMCPlugins.ButtonCore)" target="11" />
|
|
||||||
<module name="ButtonProcessor" target="8" />
|
|
||||||
<module name="Chroma-Core" target="11" />
|
|
||||||
<module name="ChunkArchive" target="1.8" />
|
|
||||||
<module name="CorePOM" target="11" />
|
|
||||||
<module name="RandomTeleport" target="1.8" />
|
|
||||||
</bytecodeTargetLevel>
|
|
||||||
</component>
|
|
||||||
<component name="JavacSettings">
|
|
||||||
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
|
|
||||||
<module name="BuildConfigUpdater" options="" />
|
|
||||||
<module name="ButtonCore (1) (com.github.TBMCPlugins.ButtonCore)" options="" />
|
|
||||||
<module name="ButtonProcessor" options="-proc:none" />
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Encoding">
|
|
||||||
<file url="file://$PROJECT_DIR$/ButtonProcessor" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/ButtonProcessor/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/ButtonProcessor/src/main/resources" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/Chroma-Core/src/main/java" charset="UTF-8" />
|
|
||||||
<file url="file://$PROJECT_DIR$/Chroma-Core/src/main/resources" charset="UTF-8" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<profile version="1.0">
|
|
||||||
<option name="myName" value="Project Default" />
|
|
||||||
<inspection_tool class="WeakerAccess" enabled="false" level="WARNING" enabled_by_default="false">
|
|
||||||
<option name="SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS" value="false" />
|
|
||||||
<option name="SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES" value="false" />
|
|
||||||
<option name="SUGGEST_PRIVATE_FOR_INNERS" value="false" />
|
|
||||||
<disabledExtension id="moduleInfo" />
|
|
||||||
</inspection_tool>
|
|
||||||
</profile>
|
|
||||||
</component>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<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!/" />
|
|
||||||
<root url="jar://$USER_HOME$/.ideaLibSources/lombok-1.16.16-sources.jar!/" />
|
|
||||||
</SOURCES>
|
|
||||||
</library>
|
|
||||||
</component>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="MarkdownExportedFiles">
|
|
||||||
<htmlFiles />
|
|
||||||
<imageFiles />
|
|
||||||
<otherFiles />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,82 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="MarkdownProjectSettings" wasCopied="false">
|
|
||||||
<PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false">
|
|
||||||
<PanelProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
|
|
||||||
</PanelProvider>
|
|
||||||
</PreviewSettings>
|
|
||||||
<ParserSettings gitHubSyntaxChange="false" emojiShortcuts="1" emojiImages="0">
|
|
||||||
<PegdownExtensions>
|
|
||||||
<option name="ABBREVIATIONS" value="false" />
|
|
||||||
<option name="ANCHORLINKS" value="true" />
|
|
||||||
<option name="ASIDE" value="false" />
|
|
||||||
<option name="ATXHEADERSPACE" value="true" />
|
|
||||||
<option name="AUTOLINKS" value="true" />
|
|
||||||
<option name="DEFINITIONS" value="false" />
|
|
||||||
<option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
|
|
||||||
<option name="FENCED_CODE_BLOCKS" value="true" />
|
|
||||||
<option name="FOOTNOTES" value="false" />
|
|
||||||
<option name="HARDWRAPS" value="false" />
|
|
||||||
<option name="HTML_DEEP_PARSER" value="false" />
|
|
||||||
<option name="INSERTED" value="false" />
|
|
||||||
<option name="QUOTES" value="false" />
|
|
||||||
<option name="RELAXEDHRULES" value="true" />
|
|
||||||
<option name="SMARTS" value="false" />
|
|
||||||
<option name="STRIKETHROUGH" value="true" />
|
|
||||||
<option name="SUBSCRIPT" value="false" />
|
|
||||||
<option name="SUPERSCRIPT" value="false" />
|
|
||||||
<option name="SUPPRESS_HTML_BLOCKS" value="false" />
|
|
||||||
<option name="SUPPRESS_INLINE_HTML" value="false" />
|
|
||||||
<option name="TABLES" value="true" />
|
|
||||||
<option name="TASKLISTITEMS" value="true" />
|
|
||||||
<option name="TOC" value="false" />
|
|
||||||
<option name="WIKILINKS" value="true" />
|
|
||||||
</PegdownExtensions>
|
|
||||||
<ParserOptions>
|
|
||||||
<option name="ADMONITION_EXT" value="false" />
|
|
||||||
<option name="ATTRIBUTES_EXT" value="false" />
|
|
||||||
<option name="COMMONMARK_LISTS" value="true" />
|
|
||||||
<option name="DUMMY" value="false" />
|
|
||||||
<option name="EMOJI_SHORTCUTS" value="true" />
|
|
||||||
<option name="ENUMERATED_REFERENCES_EXT" value="false" />
|
|
||||||
<option name="FLEXMARK_FRONT_MATTER" value="false" />
|
|
||||||
<option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
|
|
||||||
<option name="GFM_TABLE_RENDERING" value="true" />
|
|
||||||
<option name="GITBOOK_URL_ENCODING" value="false" />
|
|
||||||
<option name="GITHUB_LISTS" value="false" />
|
|
||||||
<option name="GITHUB_WIKI_LINKS" value="true" />
|
|
||||||
<option name="GITLAB_EXT" value="false" />
|
|
||||||
<option name="GITLAB_MATH_EXT" value="false" />
|
|
||||||
<option name="GITLAB_MERMAID_EXT" value="false" />
|
|
||||||
<option name="HEADER_ID_NO_DUPED_DASHES" value="false" />
|
|
||||||
<option name="JEKYLL_FRONT_MATTER" value="false" />
|
|
||||||
<option name="MACROS_EXT" value="false" />
|
|
||||||
<option name="NO_TEXT_ATTRIBUTES" value="false" />
|
|
||||||
<option name="PARSE_HTML_ANCHOR_ID" value="false" />
|
|
||||||
<option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
|
|
||||||
</ParserOptions>
|
|
||||||
</ParserSettings>
|
|
||||||
<HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false" addDocTypeHtml="true">
|
|
||||||
<GeneratorProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
|
|
||||||
</GeneratorProvider>
|
|
||||||
<headerTop />
|
|
||||||
<headerBottom />
|
|
||||||
<bodyTop />
|
|
||||||
<bodyBottom />
|
|
||||||
</HtmlSettings>
|
|
||||||
<CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="false" isCssTextEnabled="false" isDynamicPageWidth="true">
|
|
||||||
<StylesheetProvider>
|
|
||||||
<provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
|
|
||||||
</StylesheetProvider>
|
|
||||||
<ScriptProviders />
|
|
||||||
<cssText />
|
|
||||||
<cssUriHistory />
|
|
||||||
</CssSettings>
|
|
||||||
<HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
|
|
||||||
<LinkMapSettings>
|
|
||||||
<textMaps />
|
|
||||||
</LinkMapSettings>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,3 +0,0 @@
|
||||||
<component name="MarkdownNavigator.ProfileManager">
|
|
||||||
<settings default="" pdf-export="" />
|
|
||||||
</component>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="EntryPointsManager">
|
|
||||||
<list size="1">
|
|
||||||
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />
|
|
||||||
</list>
|
|
||||||
</component>
|
|
||||||
<component name="MavenProjectsManager">
|
|
||||||
<option name="originalFiles">
|
|
||||||
<list>
|
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</list>
|
|
||||||
</option>
|
|
||||||
<option name="ignoredFiles">
|
|
||||||
<set>
|
|
||||||
<option value="$PROJECT_DIR$/pom.xml" />
|
|
||||||
</set>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_12" default="false" project-jdk-name="11" project-jdk-type="JavaSDK">
|
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/BuildConfigUpdater/BuildConfigUpdater.iml" filepath="$PROJECT_DIR$/BuildConfigUpdater/BuildConfigUpdater.iml" />
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml" filepath="$PROJECT_DIR$/ButtonCore/ButtonCore (1) (com.github.TBMCPlugins.ButtonCore).iml" />
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/ButtonProcessor/ButtonProcessor.iml" filepath="$PROJECT_DIR$/ButtonProcessor/ButtonProcessor.iml" />
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/Chroma-Core/Chroma-Core.iml" filepath="$PROJECT_DIR$/Chroma-Core/Chroma-Core.iml" />
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/CorePOM/CorePOM.iml" filepath="$PROJECT_DIR$/CorePOM/CorePOM.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,124 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="Palette2">
|
|
||||||
<group name="Swing">
|
|
||||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Button" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="RadioButton" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="CheckBox" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
|
||||||
<initial-values>
|
|
||||||
<property name="text" value="Label" />
|
|
||||||
</initial-values>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
|
||||||
<preferred-size width="150" height="-1" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
|
||||||
<preferred-size width="150" height="50" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
|
||||||
<preferred-size width="200" height="200" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
|
||||||
<preferred-size width="-1" height="20" />
|
|
||||||
</default-constraints>
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
|
||||||
</item>
|
|
||||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
|
||||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
|
||||||
</item>
|
|
||||||
</group>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="VcsDirectoryMappings">
|
|
||||||
<mapping directory="" vcs="Git" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,55 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="MavenAnnotationProcessors">
|
|
||||||
<modules>
|
|
||||||
<module name="ButtonProcessor" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="module" module-name="ButtonCore (1) (com.github.TBMCPlugins.ButtonCore)" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.objenesis:objenesis:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.github.TBMCPlugins.ButtonCore:ButtonCore:master-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
<orderEntry type="module" module-name="Chroma-Core" />
|
|
||||||
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:3.0.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.objenesis:objenesis:2.6" level="project" />
|
|
||||||
<orderEntry type="module" module-name="ButtonProcessor" />
|
|
||||||
<orderEntry type="library" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,40 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="ExternalSystem" externalSystem="Maven" />
|
|
||||||
<component name="MavenAnnotationProcessors">
|
|
||||||
<modules>
|
|
||||||
<module name="ButtonProcessor" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.21" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.21" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -1,88 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="MavenAnnotationProcessors">
|
|
||||||
<modules>
|
|
||||||
<module name="ButtonProcessor" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
|
|
||||||
<output url="file://$MODULE_DIR$/target/classes" />
|
|
||||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
|
||||||
<content url="file://$MODULE_DIR$/../ButtonCore/src/main/java">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../ButtonCore/src/main/java" isTestSource="false" />
|
|
||||||
</content>
|
|
||||||
<content url="file://$MODULE_DIR$/../ButtonCore/src/main/resources">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../ButtonCore/src/main/resources" type="java-resource" />
|
|
||||||
</content>
|
|
||||||
<content url="file://$MODULE_DIR$/../ButtonCore/src/test/java">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/../ButtonCore/src/test/java" isTestSource="true" />
|
|
||||||
</content>
|
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/target/generated-sources/annotations" isTestSource="false" generated="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.TownyAdvanced:Towny:0.94.0.9" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.milkbowl:VaultAPI:master-89c00e1cb8-1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:3.0.0" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:EssentialsX:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: io.papermc:paperlib:1.0.2" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:NMSProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:UpdatedMetaProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:1_8_R1Provider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:1_8_R2Provider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:LegacyProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:ReflectionProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit:bukkit:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:FlattenedProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.vexsoftware:nuvotifier-universal:2.3.4" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.onarandombox.multiversecore:Multiverse-Core:4.0.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: com.google.code.findbugs:annotations:2.0.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.19" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.12-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.TownyAdvanced:Towny:0.94.0.9" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.milkbowl:VaultAPI:master-89c00e1cb8-1" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.mockito:mockito-core:3.0.0" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy-agent:1.9.10" level="project" />
|
|
||||||
<orderEntry type="library" name="Maven: org.objenesis:objenesis:2.6" level="project" />
|
|
||||||
<orderEntry type="module" module-name="ButtonProcessor" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:EssentialsX:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: io.papermc:paperlib:1.0.2" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:NMSProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:UpdatedMetaProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:1_8_R1Provider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:1_8_R2Provider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:LegacyProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:ReflectionProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit:bukkit:1.12.2-R0.1-SNAPSHOT" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: net.ess3:FlattenedProvider:2.17.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.vexsoftware:nuvotifier-universal:2.3.4" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.onarandombox.multiversecore:Multiverse-Core:4.0.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -117,8 +117,8 @@ public class MainPlugin extends ButtonPlugin {
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("Votifier") && economy != null)
|
if (Bukkit.getPluginManager().isPluginEnabled("Votifier") && economy != null)
|
||||||
Component.registerComponent(this, new VotifierComponent(economy));
|
Component.registerComponent(this, new VotifierComponent(economy));
|
||||||
ComponentManager.enableComponents();
|
ComponentManager.enableComponents();
|
||||||
getCommand2MC().registerCommand(new ComponentCommand());
|
registerCommand(new ComponentCommand());
|
||||||
getCommand2MC().registerCommand(new ChromaCommand());
|
registerCommand(new ChromaCommand());
|
||||||
TBMCCoreAPI.RegisterEventsForExceptions(new PlayerListener(), this);
|
TBMCCoreAPI.RegisterEventsForExceptions(new PlayerListener(), this);
|
||||||
TBMCCoreAPI.RegisterEventsForExceptions(getCommand2MC(), this);
|
TBMCCoreAPI.RegisterEventsForExceptions(getCommand2MC(), this);
|
||||||
ChromaGamerBase.addConverter(commandSender -> Optional.ofNullable(commandSender instanceof ConsoleCommandSender || commandSender instanceof BlockCommandSender
|
ChromaGamerBase.addConverter(commandSender -> Optional.ofNullable(commandSender instanceof ConsoleCommandSender || commandSender instanceof BlockCommandSender
|
||||||
|
|
|
@ -9,13 +9,9 @@ import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import static buttondevteam.core.MainPlugin.permission;
|
@CommandClass(path = "member", helpText = { //
|
||||||
|
|
||||||
@CommandClass(modOnly = true, path = "member", helpText = { //
|
|
||||||
"Member command", //
|
"Member command", //
|
||||||
"Add or remove server members.", //
|
"Add or remove server members.", //
|
||||||
})
|
})
|
||||||
|
@ -27,12 +23,12 @@ public class MemberCommand extends ICommand2MC {
|
||||||
this.component = component;
|
this.component = component;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand(permGroup = Command2.Subcommand.MOD_GROUP)
|
||||||
public boolean add(CommandSender sender, OfflinePlayer player) {
|
public boolean add(CommandSender sender, OfflinePlayer player) {
|
||||||
return addRemove(sender, player, true);
|
return addRemove(sender, player, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand(permGroup = Command2.Subcommand.MOD_GROUP)
|
||||||
public boolean remove(CommandSender sender, OfflinePlayer player) {
|
public boolean remove(CommandSender sender, OfflinePlayer player) {
|
||||||
return addRemove(sender, player, false);
|
return addRemove(sender, player, false);
|
||||||
}
|
}
|
||||||
|
@ -53,17 +49,25 @@ public class MemberCommand extends ICommand2MC {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand
|
||||||
public void def(CommandSender sender) {
|
public void def(Player player) {
|
||||||
if(!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage("§cYou need to be a player to use this command.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Player player= (Player) sender;
|
|
||||||
String msg;
|
String msg;
|
||||||
if (component.checkMember(player))
|
if (!component.checkNotMember(player))
|
||||||
msg="You are a member.";
|
msg = "You are a member.";
|
||||||
else {
|
else {
|
||||||
component.getRegTime(player);
|
double pt = component.getPlayTime(player);
|
||||||
|
long rt = component.getRegTime(player);
|
||||||
|
if (pt == -1 || rt == -1) {
|
||||||
|
Boolean result = component.addPlayerAsMember(player);
|
||||||
|
if (result == null)
|
||||||
|
msg = "Can't assign member group because groups are not supported by the permissions plugin.";
|
||||||
|
else if (result)
|
||||||
|
msg = "You meet all the requirements.";
|
||||||
|
else
|
||||||
|
msg = "You should be a member but failed to add you to the group.";
|
||||||
|
} else
|
||||||
|
msg = String.format("You need to play for %.2f hours total or play for %d more days to become a member.",
|
||||||
|
pt, TimeUnit.MILLISECONDS.toDays(rt));
|
||||||
}
|
}
|
||||||
|
player.sendMessage(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,37 +62,60 @@ public class MemberComponent extends Component<MainPlugin> implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
if (checkMember(event.getPlayer()) && (checkRegTime(event.getPlayer()) || checkPlayTime(event.getPlayer()))) {
|
if (checkNotMember(event.getPlayer()) && (checkRegTime(event.getPlayer()) || checkPlayTime(event.getPlayer()))) {
|
||||||
try {
|
addPlayerAsMember(event.getPlayer());
|
||||||
if (permission.playerAddGroup(null, event.getPlayer(), memberGroup().get())) {
|
|
||||||
event.getPlayer().sendMessage("§bYou are a member now. YEEHAW");
|
|
||||||
MainPlugin.Instance.getLogger().info("Added " + event.getPlayer().getName() + " as a member.");
|
|
||||||
} else {
|
|
||||||
MainPlugin.Instance.getLogger().warning("Failed to assign the member role! Please make sure the member group exists or disable the component if it's unused.");
|
|
||||||
}
|
|
||||||
} catch (UnsupportedOperationException e) {
|
|
||||||
MainPlugin.Instance.getLogger().warning("Failed to assign the member role! Groups are not supported by the permissions implementation.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkMember(Player player) {
|
public Boolean addPlayerAsMember(Player player) {
|
||||||
|
try {
|
||||||
|
if (permission.playerAddGroup(null, player, memberGroup().get())) {
|
||||||
|
player.sendMessage("§bYou are a member now!");
|
||||||
|
MainPlugin.Instance.getLogger().info("Added " + player.getName() + " as a member.");
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
MainPlugin.Instance.getLogger().warning("Failed to assign the member role! Please make sure the member group exists or disable the component if it's unused.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (UnsupportedOperationException e) {
|
||||||
|
MainPlugin.Instance.getLogger().warning("Failed to assign the member role! Groups are not supported by the permissions implementation.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean checkNotMember(Player player) {
|
||||||
return permission != null && !permission.playerInGroup(player, memberGroup().get());
|
return permission != null && !permission.playerInGroup(player, memberGroup().get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkRegTime(Player player) {
|
public boolean checkRegTime(Player player) {
|
||||||
return new Date(player.getFirstPlayed()).toInstant().plus(registeredForDays().get(), ChronoUnit.DAYS).isBefore(Instant.now());
|
return getRegTime(player) == -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkPlayTime(Player player) {
|
public boolean checkPlayTime(Player player) {
|
||||||
return player.getStatistic(playtime.getKey()) > playtime.getValue() * playedHours().get();
|
return getPlayTime(player) > playtime.getValue() * playedHours().get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns milliseconds
|
||||||
|
*/
|
||||||
public long getRegTime(Player player) {
|
public long getRegTime(Player player) {
|
||||||
Instant date = new Date(player.getFirstPlayed()).toInstant().plus(registeredForDays().get(), ChronoUnit.DAYS);
|
Instant date = new Date(player.getFirstPlayed()).toInstant().plus(registeredForDays().get(), ChronoUnit.DAYS);
|
||||||
if(date.isBefore(Instant.now()))
|
if (date.isAfter(Instant.now()))
|
||||||
return date.toEpochMilli()-Instant.now().toEpochMilli();
|
return date.toEpochMilli() - Instant.now().toEpochMilli();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getPlayTimeTotal(Player player) {
|
||||||
|
return player.getStatistic(playtime.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns hours
|
||||||
|
*/
|
||||||
|
public double getPlayTime(Player player) {
|
||||||
|
double pt = playedHours().get() - (double) getPlayTimeTotal(player) / playtime.getValue();
|
||||||
|
if (pt < 0) return -1;
|
||||||
|
return pt;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,8 @@ import org.bukkit.boss.BossBar;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@CommandClass(modOnly = true, path = "schrestart", helpText = {
|
@CommandClass(modOnly = true, path = "schrestart", helpText = {
|
||||||
"Scheduled restart", //
|
"Scheduled restart", //
|
||||||
"This command restarts the server 1 minute after it's executed, warning players every 10 seconds.", //
|
"This command restarts the server 1 minute after it's executed, warning players every 10 seconds.", //
|
||||||
|
@ -31,6 +33,7 @@ public class ScheduledRestartCommand extends ICommand2MC {
|
||||||
private BukkitTask restarttask;
|
private BukkitTask restarttask;
|
||||||
private volatile BossBar restartbar;
|
private volatile BossBar restartbar;
|
||||||
@Getter
|
@Getter
|
||||||
|
@Nonnull
|
||||||
private final RestartComponent component;
|
private final RestartComponent component;
|
||||||
|
|
||||||
@Command2.Subcommand
|
@Command2.Subcommand
|
||||||
|
|
|
@ -4,6 +4,7 @@ import buttondevteam.buttonproc.HasConfig;
|
||||||
import buttondevteam.core.ComponentManager;
|
import buttondevteam.core.ComponentManager;
|
||||||
import buttondevteam.lib.TBMCCoreAPI;
|
import buttondevteam.lib.TBMCCoreAPI;
|
||||||
import buttondevteam.lib.chat.Command2MC;
|
import buttondevteam.lib.chat.Command2MC;
|
||||||
|
import buttondevteam.lib.chat.ICommand2MC;
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
@ -23,7 +24,7 @@ import java.util.Stack;
|
||||||
|
|
||||||
@HasConfig(global = true)
|
@HasConfig(global = true)
|
||||||
public abstract class ButtonPlugin extends JavaPlugin {
|
public abstract class ButtonPlugin extends JavaPlugin {
|
||||||
@Getter
|
@Getter //Needs to be static as we don't know the plugin when a command is handled
|
||||||
private static Command2MC command2MC = new Command2MC();
|
private static Command2MC command2MC = new Command2MC();
|
||||||
@Getter(AccessLevel.PROTECTED)
|
@Getter(AccessLevel.PROTECTED)
|
||||||
private IHaveConfig iConfig;
|
private IHaveConfig iConfig;
|
||||||
|
@ -84,7 +85,7 @@ public abstract class ButtonPlugin extends JavaPlugin {
|
||||||
if (ConfigData.saveNow(getConfig()))
|
if (ConfigData.saveNow(getConfig()))
|
||||||
getLogger().info("Saved configuration changes.");
|
getLogger().info("Saved configuration changes.");
|
||||||
iConfig = null; //Clearing the hashmap is not enough, we need to update the section as well
|
iConfig = null; //Clearing the hashmap is not enough, we need to update the section as well
|
||||||
//TBMCChatAPI.RemoveCommands(this); - TODO
|
getCommand2MC().unregisterCommands(this);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TBMCCoreAPI.SendException("Error while disabling plugin " + getName() + "!", e);
|
TBMCCoreAPI.SendException("Error while disabling plugin " + getName() + "!", e);
|
||||||
}
|
}
|
||||||
|
@ -147,6 +148,16 @@ public abstract class ButtonPlugin extends JavaPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers command and sets its plugin.
|
||||||
|
*
|
||||||
|
* @param command The command to register
|
||||||
|
*/
|
||||||
|
protected void registerCommand(ICommand2MC command) {
|
||||||
|
command.registerToPlugin(this);
|
||||||
|
getCommand2MC().registerCommand(command);
|
||||||
|
}
|
||||||
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.TYPE)
|
@Target(ElementType.TYPE)
|
||||||
public @interface ConfigOpts {
|
public @interface ConfigOpts {
|
||||||
|
|
|
@ -24,7 +24,7 @@ import java.util.stream.Collectors;
|
||||||
*/
|
*/
|
||||||
@HasConfig(global = false) //Used for obtaining javadoc
|
@HasConfig(global = false) //Used for obtaining javadoc
|
||||||
public abstract class Component<TP extends JavaPlugin> {
|
public abstract class Component<TP extends JavaPlugin> {
|
||||||
private static HashMap<Class<? extends Component>, Component<? extends JavaPlugin>> components = new HashMap<>();
|
@SuppressWarnings("rawtypes") private static HashMap<Class<? extends Component>, Component<? extends JavaPlugin>> components = new HashMap<>();
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private boolean enabled = false;
|
private boolean enabled = false;
|
||||||
|
@ -61,7 +61,7 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
* @param component The component to unregister
|
* @param component The component to unregister
|
||||||
* @return Whether the component is unregistered successfully (it also got disabled)
|
* @return Whether the component is unregistered successfully (it also got disabled)
|
||||||
*/
|
*/
|
||||||
public static <T extends JavaPlugin> boolean unregisterComponent(T plugin, Component<T> component) {
|
public static <T extends ButtonPlugin> boolean unregisterComponent(T plugin, Component<T> component) {
|
||||||
return registerUnregisterComponent(plugin, component, false);
|
return registerUnregisterComponent(plugin, component, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
try {
|
try {
|
||||||
val metaAnn = component.getClass().getAnnotation(ComponentMetadata.class);
|
val metaAnn = component.getClass().getAnnotation(ComponentMetadata.class);
|
||||||
if (metaAnn != null) {
|
if (metaAnn != null) {
|
||||||
Class<? extends Component>[] dependencies = metaAnn.depends();
|
@SuppressWarnings("rawtypes") Class<? extends Component>[] dependencies = metaAnn.depends();
|
||||||
for (val dep : dependencies) { //TODO: Support dependencies at enable/disable as well
|
for (val dep : dependencies) { //TODO: Support dependencies at enable/disable as well
|
||||||
if (!components.containsKey(dep)) {
|
if (!components.containsKey(dep)) {
|
||||||
plugin.getLogger().warning("Failed to " + (register ? "" : "un") + "register component " + component.getClassName() + " as a required dependency is missing/disabled: " + dep.getSimpleName());
|
plugin.getLogger().warning("Failed to " + (register ? "" : "un") + "register component " + component.getClassName() + " as a required dependency is missing/disabled: " + dep.getSimpleName());
|
||||||
|
@ -97,7 +97,6 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true; //Component shouldn't be enabled
|
|
||||||
} else {
|
} else {
|
||||||
if (!components.containsKey(component.getClass()))
|
if (!components.containsKey(component.getClass()))
|
||||||
return true; //Already unregistered
|
return true; //Already unregistered
|
||||||
|
@ -111,8 +110,8 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
}
|
}
|
||||||
component.unregister(plugin);
|
component.unregister(plugin);
|
||||||
components.remove(component.getClass());
|
components.remove(component.getClass());
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
TBMCCoreAPI.SendException("Failed to " + (register ? "" : "un") + "register component " + component.getClassName() + "!", e);
|
TBMCCoreAPI.SendException("Failed to " + (register ? "" : "un") + "register component " + component.getClassName() + "!", e);
|
||||||
return false;
|
return false;
|
||||||
|
@ -125,7 +124,7 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
*
|
*
|
||||||
* @param component The component to register
|
* @param component The component to register
|
||||||
*/
|
*/
|
||||||
public static void setComponentEnabled(Component component, boolean enabled) throws UnregisteredComponentException {
|
public static void setComponentEnabled(Component<?> component, boolean enabled) throws UnregisteredComponentException {
|
||||||
if (!components.containsKey(component.getClass()))
|
if (!components.containsKey(component.getClass()))
|
||||||
throw new UnregisteredComponentException(component);
|
throw new UnregisteredComponentException(component);
|
||||||
if (component.enabled == enabled) return; //Don't do anything
|
if (component.enabled == enabled) return; //Don't do anything
|
||||||
|
@ -141,7 +140,7 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
//System.out.println("Done enabling "+component.getClassName());
|
//System.out.println("Done enabling "+component.getClassName());
|
||||||
} else {
|
} else {
|
||||||
component.disable();
|
component.disable();
|
||||||
//TBMCChatAPI.RemoveCommands(component); - TODO
|
ButtonPlugin.getCommand2MC().unregisterCommands(component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,6 +161,7 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
*
|
*
|
||||||
* @return The currently registered components
|
* @return The currently registered components
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
public static Map<Class<? extends Component>, Component<? extends JavaPlugin>> getComponents() {
|
public static Map<Class<? extends Component>, Component<? extends JavaPlugin>> getComponents() {
|
||||||
return Collections.unmodifiableMap(components);
|
return Collections.unmodifiableMap(components);
|
||||||
}
|
}
|
||||||
|
@ -202,13 +202,16 @@ public abstract class Component<TP extends JavaPlugin> {
|
||||||
protected abstract void disable();
|
protected abstract void disable();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a TBMCCommand to the component. Make sure to use {@link buttondevteam.lib.chat.CommandClass} and {@link buttondevteam.lib.chat.Command2.Subcommand}.
|
* Registers a command to the component. Make sure to use {@link buttondevteam.lib.chat.CommandClass} and {@link buttondevteam.lib.chat.Command2.Subcommand}.
|
||||||
* You don't need to register the command in plugin.yml.
|
* You don't need to register the command in plugin.yml.
|
||||||
*
|
*
|
||||||
* @param commandBase Custom coded command class
|
* @param command Custom coded command class
|
||||||
*/
|
*/
|
||||||
protected final void registerCommand(ICommand2MC commandBase) {
|
protected final void registerCommand(ICommand2MC command) {
|
||||||
ButtonPlugin.getCommand2MC().registerCommand(commandBase);
|
if (plugin instanceof ButtonPlugin)
|
||||||
|
command.registerToPlugin((ButtonPlugin) plugin);
|
||||||
|
command.registerToComponent(this);
|
||||||
|
ButtonPlugin.getCommand2MC().registerCommand(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -12,6 +12,7 @@ import lombok.val;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
|
@ -113,6 +114,8 @@ public abstract class Command2<TC extends ICommand2, TP extends Command2Sender>
|
||||||
|
|
||||||
private ArrayList<String> commandHelp = new ArrayList<>(); //Mainly needed by Discord
|
private ArrayList<String> commandHelp = new ArrayList<>(); //Mainly needed by Discord
|
||||||
|
|
||||||
|
private char commandChar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a param converter that obtains a specific object from a string parameter.
|
* Adds a param converter that obtains a specific object from a string parameter.
|
||||||
* The converter may return null.
|
* The converter may return null.
|
||||||
|
@ -183,6 +186,7 @@ public abstract class Command2<TC extends ICommand2, TP extends Command2Sender>
|
||||||
params.add(cg);
|
params.add(cg);
|
||||||
else {
|
else {
|
||||||
sender.sendMessage("§cYou need to be a " + sendertype.getSimpleName() + " to use this command.");
|
sender.sendMessage("§cYou need to be a " + sendertype.getSimpleName() + " to use this command.");
|
||||||
|
sender.sendMessage(sd.helpText); //Send what the command is about, could be useful for commands like /member where some subcommands aren't player-only
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
val paramArr = sd.method.getParameters();
|
val paramArr = sd.method.getParameters();
|
||||||
|
@ -259,6 +263,7 @@ public abstract class Command2<TC extends ICommand2, TP extends Command2Sender>
|
||||||
public abstract void registerCommand(TC command);
|
public abstract void registerCommand(TC command);
|
||||||
|
|
||||||
protected void registerCommand(TC command, @SuppressWarnings("SameParameterValue") char commandChar) {
|
protected void registerCommand(TC command, @SuppressWarnings("SameParameterValue") char commandChar) {
|
||||||
|
this.commandChar = commandChar;
|
||||||
val path = command.getCommandPath();
|
val path = command.getCommandPath();
|
||||||
int x = path.indexOf(' ');
|
int x = path.indexOf(' ');
|
||||||
val mainPath = commandChar + path.substring(0, x == -1 ? path.length() : x);
|
val mainPath = commandChar + path.substring(0, x == -1 ? path.length() : x);
|
||||||
|
@ -287,7 +292,7 @@ public abstract class Command2<TC extends ICommand2, TP extends Command2Sender>
|
||||||
var ht = command.getHelpText(method, ann);
|
var ht = command.getHelpText(method, ann);
|
||||||
if (ht != null) {
|
if (ht != null) {
|
||||||
val subcommand = commandChar + path + //Add command path (class name by default)
|
val subcommand = commandChar + path + //Add command path (class name by default)
|
||||||
(method.getName().equals("def") ? "" : " " + method.getName().replace('_', ' ').toLowerCase()); //Add method name, unless it's 'def'
|
getCommandPath(method.getName(), ' '); //Add method name, unless it's 'def'
|
||||||
ht = getParameterHelp(method, ht, subcommand);
|
ht = getParameterHelp(method, ht, subcommand);
|
||||||
subcommands.put(subcommand, new SubcommandData<>(method, command, ht)); //Result of the above (def) is that it will show the help text
|
subcommands.put(subcommand, new SubcommandData<>(method, command, ht)); //Result of the above (def) is that it will show the help text
|
||||||
scmdHelpList.add(subcommand);
|
scmdHelpList.add(subcommand);
|
||||||
|
@ -355,4 +360,31 @@ public abstract class Command2<TC extends ICommand2, TP extends Command2Sender>
|
||||||
/*public Set<String> getAllSubcommands() {
|
/*public Set<String> getAllSubcommands() {
|
||||||
return Collections.unmodifiableSet(subcommands.keySet());
|
return Collections.unmodifiableSet(subcommands.keySet());
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unregisters all of the subcommands in the given command.
|
||||||
|
*
|
||||||
|
* @param command The command object
|
||||||
|
*/
|
||||||
|
public void unregisterCommand(ICommand2<TP> command) {
|
||||||
|
var path = command.getCommandPath();
|
||||||
|
for (val method : command.getClass().getMethods()) {
|
||||||
|
val ann = method.getAnnotation(Subcommand.class);
|
||||||
|
if (ann == null) continue;
|
||||||
|
val subcommand = commandChar + path + getCommandPath(method.getName(), ' ');
|
||||||
|
subcommands.remove(subcommand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* It will start with the given replace char.
|
||||||
|
*
|
||||||
|
* @param methodName The method's name, method.getName()
|
||||||
|
* @param replaceChar The character to use between subcommands
|
||||||
|
* @return The command path starting with the replace char.
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public String getCommandPath(String methodName, char replaceChar) {
|
||||||
|
return methodName.equals("def") ? "" : replaceChar + methodName.replace('_', replaceChar).toLowerCase();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package buttondevteam.lib.chat;
|
package buttondevteam.lib.chat;
|
||||||
|
|
||||||
import buttondevteam.core.MainPlugin;
|
import buttondevteam.core.MainPlugin;
|
||||||
|
import buttondevteam.lib.architecture.ButtonPlugin;
|
||||||
|
import buttondevteam.lib.architecture.Component;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
|
@ -17,9 +19,15 @@ import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implements Listener {
|
public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implements Listener {
|
||||||
|
/**
|
||||||
|
* Don't use directly, use the method in Component and ButtonPlugin to automatically unregister the command when needed.
|
||||||
|
*
|
||||||
|
* @param command The command to register
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void registerCommand(ICommand2MC command) {
|
public void registerCommand(ICommand2MC command) {
|
||||||
super.registerCommand(command, '/');
|
super.registerCommand(command, '/');
|
||||||
|
@ -29,6 +37,13 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
PermissionDefault.TRUE)); //Allow commands by default, it will check mod-only
|
PermissionDefault.TRUE)); //Allow commands by default, it will check mod-only
|
||||||
for (val method : command.getClass().getMethods()) {
|
for (val method : command.getClass().getMethods()) {
|
||||||
if (!method.isAnnotationPresent(Subcommand.class)) continue;
|
if (!method.isAnnotationPresent(Subcommand.class)) continue;
|
||||||
|
var path = getCommandPath(method.getName(), '.');
|
||||||
|
if (path.length() > 0) {
|
||||||
|
var subperm = perm + path;
|
||||||
|
if (Bukkit.getPluginManager().getPermission(subperm) == null) //Check needed for plugin reset
|
||||||
|
Bukkit.getPluginManager().addPermission(new Permission(subperm,
|
||||||
|
PermissionDefault.TRUE)); //Allow commands by default, it will check mod-only
|
||||||
|
}
|
||||||
String pg = permGroup(command, method);
|
String pg = permGroup(command, method);
|
||||||
if (pg.length() == 0) continue;
|
if (pg.length() == 0) continue;
|
||||||
perm = "chroma." + pg;
|
perm = "chroma." + pg;
|
||||||
|
@ -45,10 +60,14 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
|
|
||||||
public boolean hasPermission(CommandSender sender, ICommand2MC command, Method method) {
|
public boolean hasPermission(CommandSender sender, ICommand2MC command, Method method) {
|
||||||
if (sender instanceof ConsoleCommandSender) return true; //Always allow the console
|
if (sender instanceof ConsoleCommandSender) return true; //Always allow the console
|
||||||
|
if (command == null) return true; //Allow viewing the command - it doesn't do anything anyway
|
||||||
String pg;
|
String pg;
|
||||||
boolean p = true;
|
boolean p = true;
|
||||||
|
var cmdperm = "chroma.command." + command.getCommandPath().replace(' ', '.');
|
||||||
|
var path = getCommandPath(method.getName(), '.');
|
||||||
String[] perms = {
|
String[] perms = {
|
||||||
"chroma.command." + command.getCommandPath().replace(' ', '.'),
|
path.length() > 0 ? cmdperm + path : null,
|
||||||
|
cmdperm,
|
||||||
(pg = permGroup(command, method)).length() > 0 ? "chroma." + pg : null
|
(pg = permGroup(command, method)).length() > 0 ? "chroma." + pg : null
|
||||||
};
|
};
|
||||||
for (String perm : perms) {
|
for (String perm : perms) {
|
||||||
|
@ -74,9 +93,11 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
* @return The permission group for the subcommand or empty string
|
* @return The permission group for the subcommand or empty string
|
||||||
*/
|
*/
|
||||||
private String permGroup(ICommand2MC command, Method method) {
|
private String permGroup(ICommand2MC command, Method method) {
|
||||||
val sc = method.getAnnotation(Subcommand.class);
|
if (method != null) {
|
||||||
if (sc != null && sc.permGroup().length() > 0) {
|
val sc = method.getAnnotation(Subcommand.class);
|
||||||
return sc.permGroup();
|
if (sc != null && sc.permGroup().length() > 0) {
|
||||||
|
return sc.permGroup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (getAnnForValue(command.getClass(), CommandClass.class, CommandClass::modOnly, false))
|
if (getAnnForValue(command.getClass(), CommandClass.class, CommandClass::modOnly, false))
|
||||||
return Subcommand.MOD_GROUP;
|
return Subcommand.MOD_GROUP;
|
||||||
|
@ -112,6 +133,21 @@ public class Command2MC extends Command2<ICommand2MC, Command2MCSender> implemen
|
||||||
super.addParamConverter(cl, converter, "§c" + errormsg);
|
super.addParamConverter(cl, converter, "§c" + errormsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void unregisterCommands(ButtonPlugin plugin) {
|
||||||
|
/*var cmds = subcommands.values().stream().map(sd -> sd.command).filter(cmd -> plugin.equals(cmd.getPlugin())).toArray(ICommand2MC[]::new);
|
||||||
|
for (var cmd : cmds)
|
||||||
|
unregisterCommand(cmd);*/
|
||||||
|
subcommands.values().removeIf(sd -> Optional.ofNullable(sd.command).map(ICommand2MC::getPlugin).map(plugin::equals).orElse(false));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregisterCommands(Component<?> component) {
|
||||||
|
/*var cmds = subcommands.values().stream().map(sd -> sd.command).filter(cmd -> component.equals(cmd.getComponent())).toArray(ICommand2MC[]::new);
|
||||||
|
for (var cmd : cmds)
|
||||||
|
unregisterCommand(cmd);*/
|
||||||
|
subcommands.values().removeIf(sd -> Optional.ofNullable(sd.command).map(ICommand2MC::getComponent)
|
||||||
|
.map(comp -> component.getClass().getSimpleName().equals(comp.getClass().getSimpleName())).orElse(false));
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
private void handleTabComplete(TabCompleteEvent event) {
|
private void handleTabComplete(TabCompleteEvent event) {
|
||||||
String commandline = event.getBuffer();
|
String commandline = event.getBuffer();
|
||||||
|
|
|
@ -47,7 +47,7 @@ public abstract class ICommand2<TP extends Command2Sender> {
|
||||||
@Getter
|
@Getter
|
||||||
private final Command2<?, TP> manager; //TIL that if I use a raw type on a variable then none of the type args will work (including what's defined on a method, not on the type)
|
private final Command2<?, TP> manager; //TIL that if I use a raw type on a variable then none of the type args will work (including what's defined on a method, not on the type)
|
||||||
|
|
||||||
public <T extends ICommand2> ICommand2(Command2<T, TP> manager) {
|
public <T extends ICommand2<TP>> ICommand2(Command2<T, TP> manager) {
|
||||||
path = getcmdpath();
|
path = getcmdpath();
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,46 @@
|
||||||
package buttondevteam.lib.chat;
|
package buttondevteam.lib.chat;
|
||||||
|
|
||||||
import buttondevteam.lib.architecture.ButtonPlugin;
|
import buttondevteam.lib.architecture.ButtonPlugin;
|
||||||
|
import buttondevteam.lib.architecture.Component;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
@SuppressWarnings("JavadocReference")
|
||||||
public abstract class ICommand2MC extends ICommand2<Command2MCSender> {
|
public abstract class ICommand2MC extends ICommand2<Command2MCSender> {
|
||||||
|
@Getter
|
||||||
|
private ButtonPlugin plugin;
|
||||||
|
@Getter
|
||||||
|
@Nullable
|
||||||
|
private Component<?> component;
|
||||||
|
|
||||||
public ICommand2MC() {
|
public ICommand2MC() {
|
||||||
super(ButtonPlugin.getCommand2MC());
|
super(ButtonPlugin.getCommand2MC());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from {@link buttondevteam.lib.architecture.Component#registerCommand(ICommand2MC)} and {@link ButtonPlugin#registerCommand(ICommand2MC)}
|
||||||
|
*/
|
||||||
|
public void registerToPlugin(ButtonPlugin plugin) {
|
||||||
|
if (this.plugin == null)
|
||||||
|
this.plugin = plugin;
|
||||||
|
else
|
||||||
|
throw new IllegalStateException("The command is already assigned to a plugin!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called from {@link buttondevteam.lib.architecture.Component#registerCommand(ICommand2MC)}
|
||||||
|
*/
|
||||||
|
public void registerToComponent(Component<?> component) {
|
||||||
|
if (this.component == null)
|
||||||
|
this.component = component;
|
||||||
|
else
|
||||||
|
throw new IllegalStateException("The command is already assigned to a component!");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*@Override
|
||||||
|
public <TX extends ICommand2<Command2MCSender>> void onRegister(Command2<TX, Command2MCSender> manager) {
|
||||||
|
super.onRegister(manager);
|
||||||
|
onRegister((Command2MC) manager); //If ICommand2 is inherited with the same type arg, this would fail but I don't want to add another type param to ICommand2
|
||||||
|
} //For example: class IOffender extends ICommand2<Command2MCSender>*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
|
||||||
<component name="MavenAnnotationProcessors">
|
|
||||||
<modules>
|
|
||||||
<module name="ButtonProcessor" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
|
|
||||||
<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$/target/generated-sources/annotations" isTestSource="false" generated="true" />
|
|
||||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
|
||||||
</content>
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:3.8.1" level="project" />
|
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.10" level="project" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
Loading…
Reference in a new issue