Merge pull request #103 from Peda1996/dependency

Extreme Sync Worldgen Speedup by disabling chunk preloading
This commit is contained in:
trainerlord 2021-01-01 13:36:31 -05:00 committed by GitHub
commit b9f6e07a25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 1087 additions and 250 deletions

View File

@ -1,79 +1,661 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac"/>
<resourceExtensions> <resourceExtensions>
<entry name=".+\.(properties|xml|html|dtd|tld)"/> <entry name=".+\.(properties|xml|html|dtd|tld)" />
<entry name=".+\.(gif|png|jpeg|jpg)"/> <entry name=".+\.(gif|png|jpeg|jpg)" />
</resourceExtensions> </resourceExtensions>
<wildcardResourcePatterns> <wildcardResourcePatterns>
<entry name="!?*.class"/> <entry name="!?*.class" />
<entry name="!?*.scala"/> <entry name="!?*.scala" />
<entry name="!?*.groovy"/> <entry name="!?*.groovy" />
<entry name="!?*.java"/> <entry name="!?*.java" />
</wildcardResourcePatterns> </wildcardResourcePatterns>
<annotationProcessing enabled="false" useClasspath="true"/> <annotationProcessing>
<bytecodeTargetLevel target="1.8"/> <profile name="Gradle Imported" enabled="true">
</component> <outputRelativeToContentRoot value="true" />
<component name="CopyrightManager" default=""> <processorPath useClasspath="false">
<module2copyright/> <entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.12/48e4e5d60309ebd833bc528dcf77668eab3cd72c/lombok-1.18.12.jar" />
</processorPath>
<module name="World_System.test" />
</profile>
<profile name="Gradle Imported" enabled="true">
<outputRelativeToContentRoot value="true" />
<option name="bungeeAnnotationResultPath" value="D:\Users\Peda1\IdeaProjects\worldsystem\build\spigradle\bungee_main" />
<option name="nukkitAnnotationResultPath" value="D:\Users\Peda1\IdeaProjects\worldsystem\build\spigradle\nukkit_main" />
<option name="pluginAnnotationResultPath" value="D:\Users\Peda1\IdeaProjects\worldsystem\build\spigradle\plugin_main" />
<option name="spigotAnnotationResultPath" value="D:\Users\Peda1\IdeaProjects\worldsystem\build\spigradle\spigot_main" />
<processorPath useClasspath="false">
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/kr.entree/spigradle-annotations/2.1.1/140e14d5fb373843420f0719f6f83cacc07d8cd1/spigradle-annotations-2.1.1.jar" />
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.12/48e4e5d60309ebd833bc528dcf77668eab3cd72c/lombok-1.18.12.jar" />
</processorPath>
<module name="World_System.main" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel target="1.8" />
</component> </component>
<component name="CopyrightManager" default="" />
<component name="DependencyValidationManager"> <component name="DependencyValidationManager">
<option name="SKIP_IMPORT_STATEMENTS" value="false"/> <option name="SKIP_IMPORT_STATEMENTS" value="false" />
</component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/ProgramData/chocolatey/lib/gradle/tools/gradle-5.6.2" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component> </component>
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false"/>
<component name="GradleUISettings"> <component name="GradleUISettings">
<setting name="root"/> <setting name="root" />
</component> </component>
<component name="GradleUISettings2"> <component name="GradleUISettings2">
<setting name="root"/> <setting name="root" />
</component>
<component name="IdProvider" IDEtalkID="11DA1DB66DD62DDA1ED602B7079FE97C" />
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
</profile>
<version value="1.0" />
</component> </component>
<component name="IdProvider" IDEtalkID="11DA1DB66DD62DDA1ED602B7079FE97C"/>
<component name="JavadocGenerationManager"> <component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY"/> <option name="OUTPUT_DIRECTORY" />
<option name="OPTION_SCOPE" value="protected"/> <option name="OPTION_SCOPE" value="protected" />
<option name="OPTION_HIERARCHY" value="true"/> <option name="OPTION_HIERARCHY" value="true" />
<option name="OPTION_NAVIGATOR" value="true"/> <option name="OPTION_NAVIGATOR" value="true" />
<option name="OPTION_INDEX" value="true"/> <option name="OPTION_INDEX" value="true" />
<option name="OPTION_SEPARATE_INDEX" value="true"/> <option name="OPTION_SEPARATE_INDEX" value="true" />
<option name="OPTION_DOCUMENT_TAG_USE" value="false"/> <option name="OPTION_DOCUMENT_TAG_USE" value="false" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false"/> <option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false"/> <option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true"/> <option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
<option name="OPTION_DEPRECATED_LIST" value="true"/> <option name="OPTION_DEPRECATED_LIST" value="true" />
<option name="OTHER_OPTIONS" value=""/> <option name="OTHER_OPTIONS" value="" />
<option name="HEAP_SIZE"/> <option name="HEAP_SIZE" />
<option name="LOCALE"/> <option name="LOCALE" />
<option name="OPEN_IN_BROWSER" value="true"/> <option name="OPEN_IN_BROWSER" value="true" />
</component> </component>
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/World System.iml" filepath="$PROJECT_DIR$/World System.iml"/> <module fileurl="file://$PROJECT_DIR$/World System.iml" filepath="$PROJECT_DIR$/World System.iml" />
<module fileurl="file://$PROJECT_DIR$/World_System.iml" filepath="$PROJECT_DIR$/World_System.iml" />
<module fileurl="file://$PROJECT_DIR$/World_System.main.iml" filepath="$PROJECT_DIR$/World_System.main.iml" />
<module fileurl="file://$PROJECT_DIR$/World_System.test.iml" filepath="$PROJECT_DIR$/World_System.test.iml" />
</modules> </modules>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-type="JavaSDK" assert-jdk-15="true" project-jdk-name="1.8"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out"/> <output url="file://$PROJECT_DIR$/out" />
</component>
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://hub.spigotmc.org/nexus/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="MavenRepo" />
<option name="name" value="MavenRepo" />
<option name="url" value="https://repo.maven.apache.org/maven2/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven4" />
<option name="name" value="maven4" />
<option name="url" value="https://papermc.io/repo/repository/maven-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="maven10" />
<option name="name" value="maven10" />
<option name="url" value="http://ci.athion.net/job/FastAsyncWorldEdit/ws/mvn/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven13" />
<option name="name" value="maven13" />
<option name="url" value="https://repo1.maven.org/maven2/commons-io/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven12" />
<option name="name" value="maven12" />
<option name="url" value="https://mvn.intellectualsites.com/content/repositories/releases/" />
</remote-repository>
<remote-repository>
<option name="id" value="Gradle Central Plugin Repository" />
<option name="name" value="Gradle Central Plugin Repository" />
<option name="url" value="https://plugins.gradle.org/m2" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://oss.sonatype.org/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven6" />
<option name="name" value="maven6" />
<option name="url" value="https://repo.extendedclip.com/content/repositories/placeholderapi/" />
</remote-repository>
<remote-repository>
<option name="id" value="BintrayJCenter" />
<option name="name" value="BintrayJCenter" />
<option name="url" value="https://jcenter.bintray.com/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven8" />
<option name="name" value="maven8" />
<option name="url" value="https://libraries.minecraft.net" />
</remote-repository>
<remote-repository>
<option name="id" value="maven9" />
<option name="name" value="maven9" />
<option name="url" value="https://repo.onarandombox.com/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven11" />
<option name="name" value="maven11" />
<option name="url" value="http://maven.sk89q.com/repo/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven14" />
<option name="name" value="maven14" />
<option name="url" value="http://maven.enginehub.org/repo/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven13" />
<option name="name" value="maven13" />
<option name="url" value="https://mvnrepository.com/artifact/commons-io/commons-io" />
</remote-repository>
</component> </component>
<component name="SvnBranchConfigurationManager"> <component name="SvnBranchConfigurationManager">
<option name="mySupportsUserInfoFilter" value="true"/> <option name="mySupportsUserInfoFilter" value="true" />
</component> </component>
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="" vcs=""/> <mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
<component name="libraryTable">
<library name="Gradle: com.github.MilkBowl:VaultAPI:1.7">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.MilkBowl/VaultAPI/1.7/46de1c582c9e974c5b15cdac3f1ad4e03bfc1f31/VaultAPI-1.7.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.MilkBowl/VaultAPI/1.7/b9809d8834b59f4c492207af3520335ec2148fc5/VaultAPI-1.7-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.github.seeseemelk:MockBukkit-v1.15:0.3.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.seeseemelk/MockBukkit-v1.15/0.3.0-SNAPSHOT/6419cfe614499d375e5b690af35ed490a25754a3/MockBukkit-v1.15-0.3.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.seeseemelk/MockBukkit-v1.15/0.3.0-SNAPSHOT/81a526e6d719edbe1eebda93fb1f895b1c418bfd/MockBukkit-v1.15-0.3.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.google.code.findbugs:jsr305:2.0.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/2.0.1/516c03b21d50a644d538de0f0369c620989cd8f0/jsr305-2.0.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
<library name="Gradle: com.google.code.gson:gson:2.8.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.0/c4ba5371a29ac9b2ad6129b1d39ea38750043eff/gson-2.8.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.8.0/baf95d8519fc1a11d388f8543cb40cd2bb9d66dc/gson-2.8.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.google.guava:guava:21.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/21.0/3a3d111be1be1b745edfa7d91678a12d7ed38709/guava-21.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/21.0/b9ed26b8c23fe7cd3e6b463b34e54e5c6d9536d5/guava-21.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.googlecode.json-simple:json-simple:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1.1/c9ad4a0850ab676c5c64461a05ca524cdfff59f1/json-simple-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1.1/15bba08e3a239d54b68209c001f9c911559d2fed/json-simple-1.1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.mojang:authlib:1.5.25">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.mojang/authlib/1.5.25/529f53466ca747e0c373b7a6ef3c2fc5d299cf64/authlib-1.5.25.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
<library name="Gradle: com.sk89q.worldedit.worldedit-libs:bukkit:7.2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit.worldedit-libs/bukkit/7.2.0-SNAPSHOT/d5c1ee5dcaf841a031dce72f7a65ca9b4e53e817/bukkit-7.2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit.worldedit-libs/bukkit/7.2.0-SNAPSHOT/f035bf429189eb36bc617a7f569df9b9395244e3/bukkit-7.2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.sk89q.worldedit.worldedit-libs:core:7.2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit.worldedit-libs/core/7.2.0-SNAPSHOT/e6dc4671885f9ca6adb9dd9ab1d707f4a9657a1f/core-7.2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit.worldedit-libs/core/7.2.0-SNAPSHOT/cf3157bc4d5bb9e5897ca9e4c317197e26f9524e/core-7.2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.sk89q.worldedit:worldedit-bukkit:7.2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit/worldedit-bukkit/7.2.0-SNAPSHOT/bd41a4f8c3472d492a88d8f88fc1d04e9b56059a/worldedit-bukkit-7.2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit/worldedit-bukkit/7.2.0-SNAPSHOT/c3e5664fe951e94364620ab160667b498f51c739/worldedit-bukkit-7.2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: com.sk89q.worldedit:worldedit-core:7.2.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit/worldedit-core/7.2.0-SNAPSHOT/c127c9ef10d0c6a57f3f8a40b2244d7b928c02bb/worldedit-core-7.2.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sk89q.worldedit/worldedit-core/7.2.0-SNAPSHOT/4d2be6ee422de0aaf6d826a1486856a815ab3d5b/worldedit-core-7.2.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: commons-codec:commons-codec:1.10">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.10/4b95f4897fa13f2cd904aee711aeafc0c5295cd8/commons-codec-1.10.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.10/11fb3d88ae7e3b757d70237064210ceb954a5a04/commons-codec-1.10-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: commons-io:commons-io:2.7">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.7/3f2bd4ba11c4162733c13cc90ca7c7ea09967102/commons-io-2.7.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.7/f86b05a416f2f498d6a84d3997e014c0084922f1/commons-io-2.7-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: commons-lang:commons-lang:2.6">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/ce1edb914c94ebc388f086c6827e8bdeec71ac2/commons-lang-2.6.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.6/67313d715fbf0ea4fd0bdb69217fb77f807a8ce5/commons-lang-2.6-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: junit:junit:4.10">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.10/e4f1766ce7404a08f45d859fb9c226fc9e41a861/junit-4.10.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.10/6c98d6766e72d5575f96c9479d1c1d3b865c6e25/junit-4.10-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: junit:junit:4.12">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/2973d150c0dc1fefe998f834810d68f278ea58ec/junit-4.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/junit/junit/4.12/a6c32b40bf3d76eca54e3c601e5d1470c86fcdfa/junit-4.12-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: kr.entree:spigradle-annotations:2.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/kr.entree/spigradle-annotations/2.1.1/140e14d5fb373843420f0719f6f83cacc07d8cd1/spigradle-annotations-2.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/kr.entree/spigradle-annotations/2.1.1/cad3977ceba49ebb86ab6ed6681ff70cfbef9191/spigradle-annotations-2.1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: me.clip:placeholderapi:2.10.9">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.clip/placeholderapi/2.10.9/7eb806cf0ac9bca89d6d6fd02b650e5f6f92306d/placeholderapi-2.10.9.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
<library name="Gradle: net.bytebuddy:byte-buddy-agent:1.10.18">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.10.18/1070e69ef571b326d91819b57bd06fd7efc60819/byte-buddy-agent-1.10.18.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.10.18/cf0a98d2728fb19c5737cb2b8e8af0bb1d7e5f91/byte-buddy-agent-1.10.18-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: net.bytebuddy:byte-buddy:1.10.18">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.10.18/20240291b4f14ffe986e45468b1f1a3c15edc37c/byte-buddy-1.10.18.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy/1.10.18/b29479dbda55b1ce407fadf3393786071c672bf1/byte-buddy-1.10.18-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: net.md-5:bungeecord-chat:1.16-R0.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.md-5/bungeecord-chat/1.16-R0.3/cf9572b866830d6dfc3ccc6b6e3cde82013cf9e0/bungeecord-chat-1.16-R0.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.md-5/bungeecord-chat/1.16-R0.3/e898ffda1f4cf3114a753473fae34f9abdb6687a/bungeecord-chat-1.16-R0.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.apache.commons:commons-lang3:3.5">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.5/6c6c702c89bfff3cd9e80b04d668c5e190d588c6/commons-lang3-3.5.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.5/f7d878153e86a1cdddf6b37850e00a9f8bff726f/commons-lang3-3.5-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.apache.logging.log4j:log4j-api:2.8.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.8.1/e801d13612e22cad62a3f4f3fe7fdbe6334a8e72/log4j-api-2.8.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.8.1/a5edb6b8c77843c8be98e0cb1f875699e76ee122/log4j-api-2.8.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.apache.logging.log4j:log4j-core:2.8.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.8.1/4ac28ff2f1ddf05dae3043a190451e8c46b73c31/log4j-core-2.8.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.8.1/a0a7f683da620c345b502fff04d1e46cde2e8d9/log4j-core-2.8.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.apiguardian:apiguardian-api:1.1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.1/7ea550039f115fcc40990925490b8ebd4b93024a/apiguardian-api-1.1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.1/f69264a564e8bf11729b029906d24592be3a3432/apiguardian-api-1.1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.assertj:assertj-core:3.18.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.18.1/aaa02680dd92a568a4278bb40aa4a6305f632ec0/assertj-core-3.18.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.assertj/assertj-core/3.18.1/e9ae1d122fdce7686454558baaaccc8738db87d0/assertj-core-3.18.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.bukkit:bukkit:1.13.1-R0.1-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bukkit/bukkit/1.13.1-R0.1-SNAPSHOT/4aae819591911e88ffa46e5bee3f2870d28a8db7/bukkit-1.13.1-R0.1-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bukkit/bukkit/1.13.1-R0.1-SNAPSHOT/d486e4c8d09a8b30acc0397fd15db479cf9f9e06/bukkit-1.13.1-R0.1-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.bukkit:bukkit:1.15.2-R0.1-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bukkit/bukkit/1.15.2-R0.1-SNAPSHOT/f460954d10b629a0ff8f11b11ba4f91d976ca45/bukkit-1.15.2-R0.1-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bukkit/bukkit/1.15.2-R0.1-SNAPSHOT/dfaa23d22e700c1967c56e440033c78ac9dc8559/bukkit-1.15.2-R0.1-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.hamcrest:hamcrest-core:1.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.1/860340562250678d1a344907ac75754e259cdb14/hamcrest-core-1.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.1/2ccf1154d1a8936042a8a742dc3e611d02ac7213/hamcrest-core-1.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.hamcrest:hamcrest-core:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.hamcrest:hamcrest-library:1.3">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/4785a3c21320980282f9f33d0d1264a69040538f/hamcrest-library-1.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-library/1.3/47a7ee46628ab7133129cd7cef1e92657bc275e/hamcrest-library-1.3-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:1.4.20" type="kotlin.common">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.20/c6761d7805b5312302f2bbd78cda68c976ce0c70/kotlin-stdlib-common-1.4.20.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.4.20/f43399bcb1a17566dd6a89937876b898b89ef4c0/kotlin-stdlib-common-1.4.20-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.20">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.20/9de2c79e95d4b4699a455e88ba285a95352e0bea/kotlin-stdlib-jdk7-1.4.20.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.4.20/5b8bd3496f34e36f787d5f7081161560eb710bbd/kotlin-stdlib-jdk7-1.4.20-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.20/756521338269950c2a276f1abe6fef8e1a5e5528/kotlin-stdlib-jdk8-1.4.20.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.4.20/c038f6244e3d0f67c2140f58ba32ce7cfdaf66e7/kotlin-stdlib-jdk8-1.4.20-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.4.20">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.20/9be77b243a362b745e365f286627b8724337009c/kotlin-stdlib-1.4.20.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.4.20/a990be30014ecfb80eabb1db4bc157bc16f3a25e/kotlin-stdlib-1.4.20-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.jetbrains:annotations:19.0.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/19.0.0/efbff6752f67a7c9de3e4251c086a88e23591dfd/annotations-19.0.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/19.0.0/46283be41e938dba9ac928ab98de7be6f7a436f1/annotations-19.0.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.jupiter:junit-jupiter-api:5.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.8.0-SNAPSHOT/d26ac9cbcec53926246c6f2689ac3d8176047f14/junit-jupiter-api-5.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.8.0-SNAPSHOT/f296be2e3ba0fe262ebade179d075649974ac711/junit-jupiter-api-5.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.jupiter:junit-jupiter-engine:5.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.8.0-SNAPSHOT/ea1e92c4e7770960584afd39b58ba99852598356/junit-jupiter-engine-5.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.8.0-SNAPSHOT/afd238b12e422c5a2bdda147c353057d4279128e/junit-jupiter-engine-5.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.jupiter:junit-jupiter-params:5.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.8.0-SNAPSHOT/bcc73ac4bb116ba48d005d7e7c21b2f802cd829f/junit-jupiter-params-5.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.8.0-SNAPSHOT/5814a831d3ad24d2b1c82af874669845ce2ae63d/junit-jupiter-params-5.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.jupiter:junit-jupiter:5.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.8.0-SNAPSHOT/bb008d4ee81836b87b97fa22096d506acae8f517/junit-jupiter-5.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.8.0-SNAPSHOT/7009caa171d1d6af0f6f09dff25f9f574826a490/junit-jupiter-5.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.platform:junit-platform-commons:1.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.8.0-SNAPSHOT/a85e1b5d4a53aa0a88b077546817b08d0f439ef2/junit-platform-commons-1.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.8.0-SNAPSHOT/af83eeaef443a9ecc769cd9df5cf4edd08b1054e/junit-platform-commons-1.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.junit.platform:junit-platform-engine:1.8.0-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.8.0-SNAPSHOT/3b7daad81d857cd562f0786dfc060fa132668fd9/junit-platform-engine-1.8.0-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.8.0-SNAPSHOT/29a30c73e35c68a7ed4ed47085f45f411b84f676/junit-platform-engine-1.8.0-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.mockito:mockito-core:3.6.28">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/3.6.28/ad16f503916da658bd7b805816ae3b296f3eea4c/mockito-core-3.6.28.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.mockito/mockito-core/3.6.28/296251bf042984db28998e4c1be22c5e265a0cc7/mockito-core-3.6.28-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.objenesis:objenesis:3.1">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/3.1/48f12deaae83a8dfc3775d830c9fd60ea59bbbca/objenesis-3.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.objenesis/objenesis/3.1/36e4b278b98654980a51e36ef60b186a757ed3d7/objenesis-3.1-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.opentest4j:opentest4j:1.2.0">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/41d55b3c2254de9837b4ec8923cbd371b8a7eab5/opentest4j-1.2.0-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.projectlombok:lombok:1.18.12">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.12/48e4e5d60309ebd833bc528dcf77668eab3cd72c/lombok-1.18.12.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.12/3110c9b1b80ffe971becf5bd9445f096b6aa8a71/lombok-1.18.12-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.projectlombok:lombok:1.18.14">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.14/bdc3e8dee0b300d3fd9414678fb9ddb42d5e20fb/lombok-1.18.14.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.projectlombok/lombok/1.18.14/ba05c9dcde63b92920ea557ea49fd5ec324f8057/lombok-1.18.14-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.spigotmc:spigot-api:1.16.2-R0.1-SNAPSHOT">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.spigotmc/spigot-api/1.16.2-R0.1-SNAPSHOT/f38f4146fcc8009ec6bbc58186183c4ccd4c341a/spigot-api-1.16.2-R0.1-SNAPSHOT.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.spigotmc/spigot-api/1.16.2-R0.1-SNAPSHOT/93521727ac18ef24c97f4bcf358e5a0b4a05af63/spigot-api-1.16.2-R0.1-SNAPSHOT-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.yaml:snakeyaml:1.25">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.25/8b6e01ef661d8378ae6dd7b511a7f2a33fae1421/snakeyaml-1.25.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.25/45379604b7a254120101009ba09537737daed6f/snakeyaml-1.25-sources.jar!/" />
</SOURCES>
</library>
<library name="Gradle: org.yaml:snakeyaml:1.26">
<CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.26/a78a8747147d2c5807683e76ec2b633e95c14fe9/snakeyaml-1.26.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.26/1f369166f21abc8c07e618c2b9c0897f405d0999/snakeyaml-1.26-sources.jar!/" />
</SOURCES>
</library>
</component> </component>
<component name="masterDetails"> <component name="masterDetails">
<states> <states>
<state key="ArtifactsStructureConfigurable.UI"> <state key="ArtifactsStructureConfigurable.UI">
<UIState> <UIState>
<splitter-proportions> <splitter-proportions>
<SplitterProportionsDataImpl/> <SplitterProportionsDataImpl />
</splitter-proportions> </splitter-proportions>
<settings/> <settings />
</UIState> </UIState>
</state> </state>
<state key="Copyright.UI"> <state key="Copyright.UI">
<UIState> <UIState>
<splitter-proportions> <splitter-proportions>
<SplitterProportionsDataImpl/> <SplitterProportionsDataImpl />
</splitter-proportions> </splitter-proportions>
</UIState> </UIState>
</state> </state>
@ -83,7 +665,7 @@
<SplitterProportionsDataImpl> <SplitterProportionsDataImpl>
<option name="proportions"> <option name="proportions">
<list> <list>
<option value="0.2"/> <option value="0.2" />
</list> </list>
</option> </option>
</SplitterProportionsDataImpl> </SplitterProportionsDataImpl>
@ -94,11 +676,11 @@
<state key="ScopeChooserConfigurable.UI"> <state key="ScopeChooserConfigurable.UI">
<UIState> <UIState>
<splitter-proportions> <splitter-proportions>
<SplitterProportionsDataImpl/> <SplitterProportionsDataImpl />
</splitter-proportions> </splitter-proportions>
<settings/> <settings />
</UIState> </UIState>
</state> </state>
</states> </states>
</component> </component>
</project> </project>

View File

@ -28,6 +28,9 @@ spigot {
name = project.property("pluginName") name = project.property("pluginName")
authors = [project.property("author")] authors = [project.property("author")]
apiVersion = project.property("apiVersion") apiVersion = project.property("apiVersion")
depends = [project.property("Vault")]
//Comands //Comands
commands { commands {
@ -152,6 +155,13 @@ repositories {
url = 'http://maven.sk89q.com/repo/' url = 'http://maven.sk89q.com/repo/'
} }
maven { url = "https://mvn.intellectualsites.com/content/repositories/releases/" } maven { url = "https://mvn.intellectualsites.com/content/repositories/releases/" }
// Commons - IO
maven { url = "https://mvnrepository.com/artifact/commons-io/commons-io" }
// WorldEdit
maven { url = "http://maven.enginehub.org/repo/" }
mavenCentral() mavenCentral()
} }
@ -174,10 +184,10 @@ dependencies {
compileOnly 'com.github.MilkBowl:VaultAPI:1.7' compileOnly 'com.github.MilkBowl:VaultAPI:1.7'
compileOnly 'com.mojang:authlib:1.5.25' compileOnly 'com.mojang:authlib:1.5.25'
compileOnly 'org.projectlombok:lombok:1.18.14' compileOnly 'org.projectlombok:lombok:1.18.14'
compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.0.0-SNAPSHOT' compileOnly 'com.sk89q.worldedit:worldedit-bukkit:7.2.0-SNAPSHOT'
compileOnly 'com.sk89q.worldedit:worldedit-core:7.0.0-SNAPSHOT' compileOnly 'com.sk89q.worldedit:worldedit-core:7.2.0-SNAPSHOT'
compile files('C:/Users/train/Desktop/Programing/Git/worldsystem/lib/commons-io-2.7.jar') compile group: 'commons-io', name: 'commons-io', version: '2.7'
compile files('C:/Users/train/Desktop/Programing/Git/worldsystem/lib/FastAsyncWorldEdit.jar') compileOnly files('dependency/FastAsyncWorldEdit.jar')
} }
shadowJar { shadowJar {

View File

@ -4,4 +4,8 @@ author = Trainerlord & Butzlabben
mcVersion = 1.16.2 mcVersion = 1.16.2
apiVersion = 1.15 apiVersion = 1.15
version = 2.4.11 version = 2.4.11
Vault = Vault
WorldEdit = WorldEdit
FAWE = FAWE

View File

@ -2,15 +2,8 @@ package de.butzlabben.world;
import de.butzlabben.world.autoupdater.AutoUpdater; import de.butzlabben.world.autoupdater.AutoUpdater;
import de.butzlabben.world.command.CommandRegistry; import de.butzlabben.world.command.CommandRegistry;
import de.butzlabben.world.config.DependenceConfig; import de.butzlabben.world.config.*;
import de.butzlabben.world.config.GuiConfig; import de.butzlabben.world.listener.*;
import de.butzlabben.world.config.MessageConfig;
import de.butzlabben.world.config.PluginConfig;
import de.butzlabben.world.config.SettingsConfig;
import de.butzlabben.world.listener.BlockListener;
import de.butzlabben.world.listener.CommandListener;
import de.butzlabben.world.listener.PlayerListener;
import de.butzlabben.world.listener.WorldEditListener;
import de.butzlabben.world.util.PapiExtension; import de.butzlabben.world.util.PapiExtension;
import de.butzlabben.world.util.PlayerPositions; import de.butzlabben.world.util.PlayerPositions;
import de.butzlabben.world.util.VersionUtil; import de.butzlabben.world.util.VersionUtil;
@ -18,16 +11,16 @@ import de.butzlabben.world.util.database.DatabaseProvider;
import de.butzlabben.world.wrapper.AsyncCreatorAdapter; import de.butzlabben.world.wrapper.AsyncCreatorAdapter;
import de.butzlabben.world.wrapper.CreatorAdapter; import de.butzlabben.world.wrapper.CreatorAdapter;
import de.butzlabben.world.wrapper.SystemWorld; import de.butzlabben.world.wrapper.SystemWorld;
import java.io.File;
import java.io.IOException;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.IOException;
/** /**
* @author Butzlabben * @author Butzlabben
* @author Jubeki * @author Jubeki
@ -38,6 +31,7 @@ public class WorldSystem extends JavaPlugin {
private static boolean is1_13Plus = false; private static boolean is1_13Plus = false;
final private String version = this.getDescription().getVersion(); final private String version = this.getDescription().getVersion();
private CreatorAdapter creator; private CreatorAdapter creator;
public static void createConfigs() { public static void createConfigs() {
File folder = getInstance().getDataFolder(); File folder = getInstance().getDataFolder();
File dir = new File(folder + "/worldsources"); File dir = new File(folder + "/worldsources");
@ -120,6 +114,7 @@ public class WorldSystem extends JavaPlugin {
pm.registerEvents(new PlayerListener(), this); pm.registerEvents(new PlayerListener(), this);
pm.registerEvents(new BlockListener(), this); pm.registerEvents(new BlockListener(), this);
pm.registerEvents(new CommandListener(), this); pm.registerEvents(new CommandListener(), this);
pm.registerEvents(new WorldInitSkipSpawn(), this);
if (pm.getPlugin("WorldEdit") != null) if (pm.getPlugin("WorldEdit") != null)
pm.registerEvents(new WorldEditListener(), this); pm.registerEvents(new WorldEditListener(), this);
@ -132,6 +127,8 @@ public class WorldSystem extends JavaPlugin {
20 * PluginConfig.getGCPeriod()); 20 * PluginConfig.getGCPeriod());
} }
/* TODO better check this only on worldInitEvent
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> { Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> {
for (World w : Bukkit.getWorlds()) { for (World w : Bukkit.getWorlds()) {
SystemWorld sw = SystemWorld.getSystemWorld(w.getName()); SystemWorld sw = SystemWorld.getSystemWorld(w.getName());
@ -139,7 +136,7 @@ public class WorldSystem extends JavaPlugin {
SettingsConfig.editWorld(w); SettingsConfig.editWorld(w);
} }
}, 20, 20 * 10); }, 20, 20 * 10);*/
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> { Bukkit.getScheduler().scheduleSyncRepeatingTask(this, () -> {
for (World w : Bukkit.getWorlds()) { for (World w : Bukkit.getWorlds()) {
@ -159,11 +156,6 @@ public class WorldSystem extends JavaPlugin {
//this.getCommand("ws fire").setExecutor(new WorldFire()); //this.getCommand("ws fire").setExecutor(new WorldFire());
System.setProperty("bstats.relocatecheck", "false"); System.setProperty("bstats.relocatecheck", "false");
Metrics m = new Metrics(this); Metrics m = new Metrics(this);
m.addCustomChart(new Metrics.SingleLineChart("worlds", DependenceConfig::getHighestID)); m.addCustomChart(new Metrics.SingleLineChart("worlds", DependenceConfig::getHighestID));
@ -175,6 +167,7 @@ public class WorldSystem extends JavaPlugin {
&& Bukkit.getPluginManager().getPlugin("WorldEdit") != null && Bukkit.getPluginManager().getPlugin("WorldEdit") != null
&& PluginConfig.loadWorldsASync() && PluginConfig.loadWorldsASync()
&& !is1_13Plus) { && !is1_13Plus) {
creator = new AsyncCreatorAdapter(); creator = new AsyncCreatorAdapter();
Bukkit.getConsoleSender() Bukkit.getConsoleSender()
.sendMessage(PluginConfig.getPrefix() + "Found FAWE! Worlds now will be created asynchronously"); .sendMessage(PluginConfig.getPrefix() + "Found FAWE! Worlds now will be created asynchronously");

View File

@ -1,86 +1,104 @@
package de.butzlabben.world.command; package de.butzlabben.world.command;
import de.butzlabben.world.command.commands.WSCommands; import de.butzlabben.world.command.commands.WSCommands;
import de.butzlabben.world.command.commands.WorldAdministrateCommand; import de.butzlabben.world.command.commands.WorldAdministrateCommand;
import de.butzlabben.world.command.commands.WorldSettingsCommands; import de.butzlabben.world.command.commands.WorldSettingsCommands;
import org.bukkit.command.Command; import de.butzlabben.world.util.Worldutils;
import org.bukkit.command.CommandExecutor; import de.butzlabben.world.wrapper.WorldTemplateProvider;
import org.bukkit.command.CommandSender; import org.bukkit.command.Command;
import static de.butzlabben.world.command.commands.WSCommands.*; import org.bukkit.command.CommandExecutor;
import static de.butzlabben.world.command.commands.WorldAdministrateCommand.*; import org.bukkit.command.CommandSender;
import java.util.List;
public class CommandRegistry implements CommandExecutor {
public class CommandRegistry implements CommandExecutor { @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) {
WSCommands ws = new WSCommands();
if (args.length == 0) { return ws.mainCommand(sender, command, label, args);
WSCommands ws = new WSCommands(); } else {
return ws.mainCommand(sender, command, label, args); WSCommands ws = new WSCommands();
} else { WorldAdministrateCommand admin = new WorldAdministrateCommand();
WSCommands ws = new WSCommands(); WorldSettingsCommands settings = new WorldSettingsCommands();
WorldAdministrateCommand admin = new WorldAdministrateCommand(); switch (args[0]) {
WorldSettingsCommands settings = new WorldSettingsCommands(); //WSCommands
switch (args[0]) { case "get":
//WSCommands return ws.getCommand(sender, command, label, args);
case "get": case "gui":
return ws.getCommand(sender, command, label, args); return ws.guiCommand(sender, command, label, args);
case "gui": case "confirm":
return ws.guiCommand(sender, command, label, args); if (sender.hasPermission("ws.confirm")) {
case "confirm": return ws.confirmCommand(sender, command, label, args);
if (sender.hasPermission("ws.confirm")) { } else {
return ws.confirmCommand(sender, command, label, args); return false;
} else { }
return false; case "home":
} return ws.homeCommand(sender, command, label, args);
case "home": case "info":
return ws.homeCommand(sender, command, label, args); return ws.infoComannd(sender, command, label, args);
case "info": case "leave":
return ws.infoComannd(sender, command, label, args); return ws.leaveCommand(sender, command, label, args);
case "leave": case "tp":
return ws.leaveCommand(sender, command, label, args); return ws.tpCommand(sender, command, label, args);
case "tp": //Admin Command
return ws.tpCommand(sender, command, label, args); case "day":
//Admin Command return admin.setTime(sender,0);
case "delmember": case "night":
return admin.delMemberCommand(sender, command, label, args); return admin.setTime(sender,14000);
case "delete": case "time":
if (sender.hasPermission("ws.delete")) { return admin.setTime(sender, args[1]);
return admin.deleteCommand(sender, command, label, args); case "rain":
} else { case "storm":
return false; return admin.setStorm(sender,true);
} case "sun":
case "addmember": return admin.setStorm(sender, false);
return admin.addMemberCommand(sender, command, label, args); case "delmember":
case "toggletp": return admin.delMemberCommand(sender, command, label, args);
return admin.toggleTeleportCommand(sender, command, label, args); case "delete":
case "togglegm": if (sender.hasPermission("ws.delete")) {
return admin.toggleGamemodeCommand(sender, command, label, args); return admin.deleteCommand(sender, command, label, args);
case "togglewe": } else {
return admin.toggleWorldeditCommand(sender, command, label, args); return false;
case "togglebuild": }
return admin.toggleBuildCommand(sender, command, label, args); case "addmember":
//World Settings Command return admin.addMemberCommand(sender, command, label, args);
case "reset": case "toggletp":
return settings.resetCommand(sender, command, label, args); return admin.toggleTeleportCommand(sender, command, label, args);
case "sethome": case "togglegm":
sender.sendMessage("Disabled For Major Error and Rework"); return admin.toggleGamemodeCommand(sender, command, label, args);
/* case "togglewe":
if (sender.hasPermission("ws.sethome")) { return admin.toggleWorldeditCommand(sender, command, label, args);
return settings.setHomeCommand(sender, command, label, args); case "togglebuild":
} else { return admin.toggleBuildCommand(sender, command, label, args);
return false; //World Settings Command
}*/ case "reset":
case "tnt": return settings.resetCommand(sender, command, label, args);
return settings.tntCommand(sender, command, label, args); case "sethome":
case "fire": sender.sendMessage("Disabled For Major Error and Rework");
return settings.fireCommand(sender, command, label, args); return false;
default: /*
return false; if (sender.hasPermission("ws.sethome")) {
} return settings.setHomeCommand(sender, command, label, args);
} } else {
} return false;
} }*/
case "tnt":
return settings.tntCommand(sender, command, label, args);
case "fire":
return settings.fireCommand(sender, command, label, args);
case "reload":
if(!sender.isOp()){
sender.sendMessage("Reloading Settings!");
WorldTemplateProvider.getInstance().reload();
Worldutils.reloadWorldSettings();
return true;
}
default:
//default command is better than the other one
return ws.mainCommand(sender, command, label, args);
}
}
}
}

View File

@ -9,6 +9,7 @@ import de.butzlabben.world.event.WorldAddmemberEvent;
import de.butzlabben.world.event.WorldDeleteEvent; import de.butzlabben.world.event.WorldDeleteEvent;
import de.butzlabben.world.event.WorldRemovememberEvent; import de.butzlabben.world.event.WorldRemovememberEvent;
import de.butzlabben.world.util.PlayerPositions; import de.butzlabben.world.util.PlayerPositions;
import de.butzlabben.world.util.PlayerWrapper;
import de.butzlabben.world.wrapper.SystemWorld; import de.butzlabben.world.wrapper.SystemWorld;
import de.butzlabben.world.wrapper.WorldPlayer; import de.butzlabben.world.wrapper.WorldPlayer;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@ -24,51 +25,116 @@ import java.io.IOException;
public class WorldAdministrateCommand { public class WorldAdministrateCommand {
public boolean setTime(CommandSender sender, String ticks) {
switch (ticks) {
case "day":
return setTime(sender, 0);
case "night":
return setTime(sender, 14000);
case "dawn":
return setTime(sender, 23000);
default:
try {
return setTime(sender, Long.parseLong(ticks));
} catch (NumberFormatException e) {
sender.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws time [day/night/dawn/0-24000]"));
return false;
}
}
}
public boolean setStorm(CommandSender sender, boolean storm) {
if (!(sender instanceof Player)) {
sender.sendMessage("Command has to be executed as a player!");
return false;
}
Player p = (Player) sender;
DependenceConfig dc = new DependenceConfig(p);
if (!dc.hasWorld()) {
p.sendMessage(MessageConfig.getNotOnWorld());
return false;
}
if (dc.getWorldname().equals(p.getWorld().getName())) {
p.getWorld().setStorm(storm);
return true;
}
p.sendMessage(MessageConfig.getNotOnWorld());
return false;
}
public boolean setTime(CommandSender sender, long ticks) {
if (!(sender instanceof Player)) {
sender.sendMessage("Command has to be executed as a player!");
return false;
}
Player p = (Player) sender;
DependenceConfig dc = new DependenceConfig(p);
if (!dc.hasWorld()) {
p.sendMessage(MessageConfig.getNotOnWorld());
return false;
}
if (dc.getWorldname().equals(p.getWorld().getName())) {
p.getWorld().setTime(ticks);
return true;
}
p.sendMessage(MessageConfig.getNotOnWorld());
return false;
}
public boolean delMemberCommand(CommandSender sender, Command command, String label, String[] args) { public boolean delMemberCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player) {
Player p = (Player) sender; Player p = (Player) sender;
if (args.length < 2) { if (args.length < 2) {
p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws delmember <Player>")); p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws delmember <Player>"));
return false; return false;
}
DependenceConfig dc = new DependenceConfig(p);
if (!dc.hasWorld()) {
p.sendMessage(MessageConfig.getNoWorldOwn());
return false;
}
@SuppressWarnings("deprecation")
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (a == null) {
p.sendMessage(MessageConfig.getNotRegistered().replaceAll("%player", args[1]));
return false;
} else if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn());
return false;
}
WorldRemovememberEvent event = new WorldRemovememberEvent(a.getUniqueId(), dc.getWorldname(), p);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled())
return false;
if (a.isOnline()) {
Player t = (Player) a;
if (t.getWorld().getName().equals(new DependenceConfig(p).getWorldname())) {
t.teleport(PluginConfig.getSpawn(t));
t.setGameMode(PluginConfig.getSpawnGamemode());
} }
}
wc.removeMember(a.getUniqueId()); DependenceConfig dc = new DependenceConfig(p);
try { if (!dc.hasWorld()) {
wc.save(); p.sendMessage(MessageConfig.getNoWorldOwn());
} catch (IOException e) { return false;
p.sendMessage(MessageConfig.getUnknownError()); }
e.printStackTrace();
} @SuppressWarnings("deprecation")
p.sendMessage(MessageConfig.getMemberRemoved().replaceAll("%player", a.getName())); OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (a == null) {
p.sendMessage(MessageConfig.getNotRegistered().replaceAll("%player", args[1]));
return false;
} else if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn());
return false;
}
WorldRemovememberEvent event = new WorldRemovememberEvent(a.getUniqueId(), dc.getWorldname(), p);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled())
return false;
if (a.isOnline()) {
Player t = (Player) a;
if (t.getWorld().getName().equals(new DependenceConfig(p).getWorldname())) {
t.teleport(PluginConfig.getSpawn(t));
t.setGameMode(PluginConfig.getSpawnGamemode());
}
}
wc.removeMember(a.getUniqueId());
try {
wc.save();
} catch (IOException e) {
p.sendMessage(MessageConfig.getUnknownError());
e.printStackTrace();
}
p.sendMessage(MessageConfig.getMemberRemoved().replaceAll("%player", a.getName()));
return true; return true;
} else { } else {
sender.sendMessage("No Console"); //TODO Get Config sender.sendMessage("No Console"); //TODO Get Config
@ -139,8 +205,11 @@ public class WorldAdministrateCommand {
} }
public boolean addMemberCommand(CommandSender sender, Command command, String label, String[] args) { public boolean addMemberCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) { if (!(sender instanceof Player)) {
Player p = (Player) sender; sender.sendMessage("No Console"); //TODO Get Config
return false;
}
Player p = (Player) sender;
if (args.length < 2) { if (args.length < 2) {
p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws addmember <Player>")); p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws addmember <Player>"));
return false; return false;
@ -152,7 +221,7 @@ public class WorldAdministrateCommand {
return false; return false;
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]); OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname()); WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (a == null) { if (a == null) {
p.sendMessage(MessageConfig.getNotRegistered().replaceAll("%player", args[1])); p.sendMessage(MessageConfig.getNotRegistered().replaceAll("%player", args[1]));
@ -175,11 +244,8 @@ public class WorldAdministrateCommand {
e.printStackTrace(); e.printStackTrace();
} }
p.sendMessage(MessageConfig.getMemberAdded().replaceAll("%player", a.getName())); p.sendMessage(MessageConfig.getMemberAdded().replaceAll("%player", a.getName()));
return true; return true;
} else {
sender.sendMessage("No Console"); //TODO Get Config
return false;
}
} }
public boolean toggleTeleportCommand(CommandSender sender, Command command, String label, String[] args) { public boolean toggleTeleportCommand(CommandSender sender, Command command, String label, String[] args) {
@ -195,8 +261,7 @@ public class WorldAdministrateCommand {
p.sendMessage(MessageConfig.getNoWorldOwn()); p.sendMessage(MessageConfig.getNoWorldOwn());
return false; return false;
} }
@SuppressWarnings("deprecation") OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname()); WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (!wc.isMember(a.getUniqueId())) { if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn()); p.sendMessage(MessageConfig.getNoMemberOwn());
@ -222,33 +287,33 @@ public class WorldAdministrateCommand {
public boolean toggleGamemodeCommand(CommandSender sender, Command command, String label, String[] args) { public boolean toggleGamemodeCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player) {
Player p = (Player) sender; Player p = (Player) sender;
if (args.length < 2) { if (args.length < 2) {
p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws togglegm <Player>")); p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws togglegm <Player>"));
return false; return false;
} }
DependenceConfig dc = new DependenceConfig(p); DependenceConfig dc = new DependenceConfig(p);
if (!dc.hasWorld()) { if (!dc.hasWorld()) {
p.sendMessage(MessageConfig.getNoWorldOwn()); p.sendMessage(MessageConfig.getNoWorldOwn());
return false; return false;
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]); OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname()); WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (!wc.isMember(a.getUniqueId())) { if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn()); p.sendMessage(MessageConfig.getNoMemberOwn());
return false; return false;
} }
WorldPlayer wp = new WorldPlayer(a, dc.getWorldname()); WorldPlayer wp = new WorldPlayer(a, dc.getWorldname());
if (wp.isOwnerofWorld()) { if (wp.isOwnerofWorld()) {
p.sendMessage(PluginConfig.getPrefix() + "§cYou are the owner"); p.sendMessage(PluginConfig.getPrefix() + "§cYou are the owner");
return false; return false;
} }
if (wp.toggleGamemode()) { if (wp.toggleGamemode()) {
p.sendMessage(MessageConfig.getToggleGameModeEnabled().replaceAll("%player", a.getName())); p.sendMessage(MessageConfig.getToggleGameModeEnabled().replaceAll("%player", a.getName()));
} else { } else {
p.sendMessage(MessageConfig.getToggleGameModeDisabled().replaceAll("%player", a.getName())); p.sendMessage(MessageConfig.getToggleGameModeDisabled().replaceAll("%player", a.getName()));
} }
return true; return true;
} else { } else {
sender.sendMessage("No Console"); //TODO Get Config sender.sendMessage("No Console"); //TODO Get Config
@ -270,7 +335,7 @@ public class WorldAdministrateCommand {
return false; return false;
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]); OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname()); WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (!wc.isMember(a.getUniqueId())) { if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn()); p.sendMessage(MessageConfig.getNoMemberOwn());
@ -294,8 +359,8 @@ public class WorldAdministrateCommand {
} }
public boolean toggleBuildCommand(CommandSender sender, Command command, String label, String[] args) { public boolean toggleBuildCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player) {
Player p = (Player) sender; Player p = (Player) sender;
if (args.length < 2) { if (args.length < 2) {
p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws togglebuild <Player>")); p.sendMessage(MessageConfig.getWrongUsage().replaceAll("%usage", "/ws togglebuild <Player>"));
return false; return false;
@ -307,7 +372,7 @@ public class WorldAdministrateCommand {
return false; return false;
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
OfflinePlayer a = Bukkit.getOfflinePlayer(args[1]); OfflinePlayer a = PlayerWrapper.getOfflinePlayer(args[1]);
WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname()); WorldConfig wc = WorldConfig.getWorldConfig(dc.getWorldname());
if (!wc.isMember(a.getUniqueId())) { if (!wc.isMember(a.getUniqueId())) {
p.sendMessage(MessageConfig.getNoMemberOwn()); p.sendMessage(MessageConfig.getNoMemberOwn());
@ -323,10 +388,10 @@ public class WorldAdministrateCommand {
} else { } else {
p.sendMessage(MessageConfig.getToggleBuildDisabled().replaceAll("%player", a.getName())); p.sendMessage(MessageConfig.getToggleBuildDisabled().replaceAll("%player", a.getName()));
} }
return true; return true;
} else { } else {
sender.sendMessage("No Console"); //TODO Get Config sender.sendMessage("No Console"); //TODO Get Config
return false; return false;
}
} }
}
} }

View File

@ -1,5 +1,6 @@
package de.butzlabben.world.config; package de.butzlabben.world.config;
import de.butzlabben.world.util.PlayerWrapper;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@ -17,15 +18,14 @@ public class DependenceConfig {
setConfig(); setConfig();
} }
@SuppressWarnings("deprecation")
public DependenceConfig(String s) { public DependenceConfig(String s) {
OfflinePlayer op = null; OfflinePlayer op = null;
try { try {
op = Bukkit.getOfflinePlayer(UUID.fromString(s)); op = PlayerWrapper.getOfflinePlayer(UUID.fromString(s));
} catch (Exception ignored) { } catch (Exception ignored) {
} }
if (op == null) { if (op == null) {
op = Bukkit.getOfflinePlayer(s); op = PlayerWrapper.getOfflinePlayer(s);
} }
uuid = op.getUniqueId(); uuid = op.getUniqueId();
} }
@ -85,7 +85,7 @@ public class DependenceConfig {
File dconfig = new File("plugins//WorldSystem//dependence.yml"); File dconfig = new File("plugins//WorldSystem//dependence.yml");
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(dconfig); YamlConfiguration cfg = YamlConfiguration.loadConfiguration(dconfig);
String uuid = this.uuid.toString(); String uuid = this.uuid.toString();
cfg.set("Dependences." + uuid + ".ActualName", Bukkit.getOfflinePlayer(this.uuid).getName()); cfg.set("Dependences." + uuid + ".ActualName", PlayerWrapper.getOfflinePlayer(this.uuid).getName());
try { try {
cfg.save(dconfig); cfg.save(dconfig);
} catch (IOException e) { } catch (IOException e) {
@ -102,7 +102,7 @@ public class DependenceConfig {
id++; id++;
cfg.set("HighestID", id); cfg.set("HighestID", id);
cfg.set("Dependences." + uuid + ".ID", id); cfg.set("Dependences." + uuid + ".ID", id);
cfg.set("Dependences." + uuid + ".ActualName", Bukkit.getOfflinePlayer(this.uuid).getName()); cfg.set("Dependences." + uuid + ".ActualName", PlayerWrapper.getOfflinePlayer(this.uuid).getName());
try { try {
cfg.save(dconfig); cfg.save(dconfig);
} catch (IOException e) { } catch (IOException e) {
@ -158,6 +158,6 @@ public class DependenceConfig {
} }
public OfflinePlayer getOwner() { public OfflinePlayer getOwner() {
return Bukkit.getOfflinePlayer(uuid); return PlayerWrapper.getOfflinePlayer(uuid);
} }
} }

View File

@ -208,6 +208,12 @@ public class PluginConfig {
return getConfig().getString("database.players_table_name"); return getConfig().getString("database.players_table_name");
} }
public static String getUUIDTableName() {
return getConfig().getString("database.players_uuids");
}
public static String getDatabaseType() { public static String getDatabaseType() {
return getConfig().getString("database.type"); return getConfig().getString("database.type");
} }

View File

@ -17,6 +17,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
//maybe just merge this config with the WorldConfig
public class SettingsConfig { public class SettingsConfig {
private static final HashMap<String, Long> borderSizes = new HashMap<>(); private static final HashMap<String, Long> borderSizes = new HashMap<>();
@ -27,6 +28,8 @@ public class SettingsConfig {
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
// TODO rebuild this, as it's inperformant and not very beautiful code..
// only load once, and then reload the things from the disk on command
public static void editWorld(World w) { public static void editWorld(World w) {
YamlConfiguration cfg = getConfig(); YamlConfiguration cfg = getConfig();

View File

@ -3,6 +3,7 @@ package de.butzlabben.world.config;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import de.butzlabben.world.GameProfileBuilder; import de.butzlabben.world.GameProfileBuilder;
import de.butzlabben.world.util.PlayerWrapper;
import de.butzlabben.world.wrapper.WorldTemplate; import de.butzlabben.world.wrapper.WorldTemplate;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -94,7 +95,7 @@ public class WorldConfig {
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file); YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
cfg.set("Informations.ID", dc.getID()); cfg.set("Informations.ID", dc.getID());
cfg.set("Informations.Owner.PlayerUUID", uuid.toString()); cfg.set("Informations.Owner.PlayerUUID", uuid.toString());
cfg.set("Informations.Owner.Actualname", Objects.requireNonNull(Bukkit.getOfflinePlayer(uuid)).getName()); cfg.set("Informations.Owner.Actualname", Objects.requireNonNull(PlayerWrapper.getOfflinePlayer(uuid)).getName());
cfg.set("Informations.template_key", template.getName()); cfg.set("Informations.template_key", template.getName());
cfg.set("Settings.TNTDamage", false); cfg.set("Settings.TNTDamage", false);
cfg.set("Settings.Fire", false); cfg.set("Settings.Fire", false);
@ -370,7 +371,7 @@ public class WorldConfig {
public HashMap<UUID, String> getMembersWithNames() { public HashMap<UUID, String> getMembersWithNames() {
HashMap<UUID, String> map = new HashMap<>(); HashMap<UUID, String> map = new HashMap<>();
for (UUID uuid : permissions.keySet()) { for (UUID uuid : permissions.keySet()) {
OfflinePlayer op = Bukkit.getOfflinePlayer(uuid); OfflinePlayer op = PlayerWrapper.getOfflinePlayer(uuid);
if (op == null || op.getName() == null) { if (op == null || op.getName() == null) {
if (PluginConfig.contactAuth()) { if (PluginConfig.contactAuth()) {
try { try {

View File

@ -10,6 +10,7 @@ import de.butzlabben.world.gui.playeroption.BuildStatus;
import de.butzlabben.world.gui.playeroption.GamemodeStatus; import de.butzlabben.world.gui.playeroption.GamemodeStatus;
import de.butzlabben.world.gui.playeroption.TeleportStatus; import de.butzlabben.world.gui.playeroption.TeleportStatus;
import de.butzlabben.world.gui.playeroption.WorldEditStatus; import de.butzlabben.world.gui.playeroption.WorldEditStatus;
import de.butzlabben.world.util.PlayerWrapper;
import de.butzlabben.world.wrapper.WorldPlayer; import de.butzlabben.world.wrapper.WorldPlayer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -22,7 +23,7 @@ public class PlayerOptionsGUI extends OrcInventory {
public PlayerOptionsGUI(Player loader, String otherPlayer, UUID other) { public PlayerOptionsGUI(Player loader, String otherPlayer, UUID other) {
super(GuiConfig.getTitle(GuiConfig.getConfig(), "options.player").replace("%player", otherPlayer), GuiConfig.getRows("options.player"), GuiConfig.isFill("options.player")); super(GuiConfig.getTitle(GuiConfig.getConfig(), "options.player").replace("%player", otherPlayer), GuiConfig.getRows("options.player"), GuiConfig.isFill("options.player"));
WorldPlayer wp = new WorldPlayer(Bukkit.getOfflinePlayer(other), loader.getWorld().getName()); WorldPlayer wp = new WorldPlayer(PlayerWrapper.getOfflinePlayer(other), loader.getWorld().getName());
loadItem("build", "/ws togglebuild " + otherPlayer, new BuildStatus(wp)); loadItem("build", "/ws togglebuild " + otherPlayer, new BuildStatus(wp));
loadItem("gamemode", "/ws togglegm " + otherPlayer, new GamemodeStatus(wp)); loadItem("gamemode", "/ws togglegm " + otherPlayer, new GamemodeStatus(wp));
loadItem("teleport", "/ws toggletp " + otherPlayer, new TeleportStatus(wp)); loadItem("teleport", "/ws toggletp " + otherPlayer, new TeleportStatus(wp));

View File

@ -4,6 +4,7 @@ import de.butzlabben.world.config.DependenceConfig;
import de.butzlabben.world.config.PluginConfig; import de.butzlabben.world.config.PluginConfig;
import de.butzlabben.world.config.WorldConfig; import de.butzlabben.world.config.WorldConfig;
import de.butzlabben.world.util.PlayerPositions; import de.butzlabben.world.util.PlayerPositions;
import de.butzlabben.world.util.PlayerWrapper;
import de.butzlabben.world.wrapper.SystemWorld; import de.butzlabben.world.wrapper.SystemWorld;
import de.butzlabben.world.wrapper.WorldPlayer; import de.butzlabben.world.wrapper.WorldPlayer;
import java.util.HashMap; import java.util.HashMap;
@ -25,6 +26,7 @@ public class PlayerListener implements Listener {
//#17 //#17
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onJoin(PlayerJoinEvent e) { public void onJoin(PlayerJoinEvent e) {
PlayerWrapper.updateDatabase(e.getPlayer());
if (PluginConfig.spawnTeleportation()) { if (PluginConfig.spawnTeleportation()) {
Player p = e.getPlayer(); Player p = e.getPlayer();
DependenceConfig dc = new DependenceConfig(p); DependenceConfig dc = new DependenceConfig(p);

View File

@ -0,0 +1,23 @@
package de.butzlabben.world.listener;
import de.butzlabben.world.config.SettingsConfig;
import de.butzlabben.world.wrapper.SystemWorld;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
public class WorldInitSkipSpawn implements Listener {
@EventHandler
public void worldInit(WorldInitEvent e) {
World world = e.getWorld();
SystemWorld sw = SystemWorld.getSystemWorld(world.getName());
if(sw == null)
return;
SettingsConfig.editWorld(world);
e.getWorld().setKeepSpawnInMemory(false);
}
}

View File

@ -39,7 +39,7 @@ public class MoneyUtil {
Preconditions.checkNotNull(uuid); Preconditions.checkNotNull(uuid);
Preconditions.checkNotNull(economy); Preconditions.checkNotNull(economy);
Preconditions.checkArgument(money > 0, "Money must not be negative"); Preconditions.checkArgument(money > 0, "Money must not be negative");
OfflinePlayer op = Bukkit.getOfflinePlayer(uuid); OfflinePlayer op = PlayerWrapper.getOfflinePlayer(uuid);
Economy economy = (Economy) MoneyUtil.economy; Economy economy = (Economy) MoneyUtil.economy;
EconomyResponse response = economy.withdrawPlayer(op, money); EconomyResponse response = economy.withdrawPlayer(op, money);
if (!response.transactionSuccess()) { if (!response.transactionSuccess()) {
@ -52,7 +52,7 @@ public class MoneyUtil {
Preconditions.checkNotNull(uuid); Preconditions.checkNotNull(uuid);
Preconditions.checkNotNull(economy); Preconditions.checkNotNull(economy);
Preconditions.checkArgument(money > 0, "Money must not be negative"); Preconditions.checkArgument(money > 0, "Money must not be negative");
OfflinePlayer op = Bukkit.getOfflinePlayer(uuid); OfflinePlayer op = PlayerWrapper.getOfflinePlayer(uuid);
Economy economy = (Economy) MoneyUtil.economy; Economy economy = (Economy) MoneyUtil.economy;
return economy.getBalance(op) >= money; return economy.getBalance(op) >= money;
} }

View File

@ -0,0 +1,98 @@
package de.butzlabben.world.util;
import com.google.common.base.Preconditions;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import de.butzlabben.world.config.PluginConfig;
import de.butzlabben.world.util.database.DatabaseProvider;
import de.butzlabben.world.util.database.DatabaseUtil;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
public class PlayerWrapper {
private static final DatabaseUtil util = DatabaseProvider.instance.util;
static {
checkTables();
}
public static void checkTables() {
if (!util.isConnectionAvailable())
return;
String uuidTableName = PluginConfig.getUUIDTableName();
try {
PreparedStatement ps = util.prepareStatement("CREATE TABLE IF NOT EXISTS " + uuidTableName +
" ( `uuid` VARCHAR(36) NOT NULL , `name` VARCHAR(36) NOT NULL , " +
" PRIMARY KEY (`name`))");
util.executeUpdate(ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void updateDatabase(Player player) {
if (!util.isConnectionAvailable())
return;
Preconditions.checkNotNull(player);
String uuidTableName = PluginConfig.getUUIDTableName();
try {
PreparedStatement ps = util.prepareStatement("REPLACE INTO " + uuidTableName +
" (uuid, name) VALUES (?, ?)");
ps.setString(1, player.getUniqueId().toString());
ps.setString(2, player.getName());
util.executeUpdate(ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
private static UUID getUUID(String name) {
String uuidTableName = PluginConfig.getUUIDTableName();
try {
PreparedStatement ps = util.prepareStatement("SELECT * FROM " + uuidTableName + " WHERE name=?");
ps.setString(1, name);
ResultSet rs = util.executeQuery(ps);
if (!rs.next())
return null;
return UUID.fromString(rs.getString("uuid"));
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static OfflinePlayer getOfflinePlayer(String name) {
Player player = Bukkit.getPlayer(name);
if(player != null)
return Bukkit.getOfflinePlayer(player.getUniqueId());
UUID uuid = PlayerWrapper.getUUID(name);
if(uuid != null)
return Bukkit.getOfflinePlayer(uuid);
return Bukkit.getOfflinePlayer(name);
}
public static OfflinePlayer getOfflinePlayer(UUID uuid) {
return Bukkit.getOfflinePlayer(uuid);
}
}

View File

@ -0,0 +1,18 @@
package de.butzlabben.world.util;
import de.butzlabben.world.config.SettingsConfig;
import de.butzlabben.world.wrapper.SystemWorld;
import org.bukkit.Bukkit;
import org.bukkit.World;
public class Worldutils {
public static void reloadWorldSettings(){
for (World w : Bukkit.getWorlds()) {
SystemWorld sw = SystemWorld.getSystemWorld(w.getName());
if (sw != null && sw.isLoaded())
SettingsConfig.editWorld(w);
}
}
}

View File

@ -18,6 +18,8 @@ public class AsyncCreatorAdapter implements CreatorAdapter {
// Create worlds async to close #16 // Create worlds async to close #16
@Override @Override
public void create(WorldCreator creator, SystemWorld sw, Runnable r) { public void create(WorldCreator creator, SystemWorld sw, Runnable r) {
TaskManager.IMP.async(() -> { TaskManager.IMP.async(() -> {
AsyncWorld world; AsyncWorld world;
if (Bukkit.getWorld(creator.name()) == null) if (Bukkit.getWorld(creator.name()) == null)

View File

@ -8,6 +8,7 @@
import de.butzlabben.world.event.WorldLoadEvent; import de.butzlabben.world.event.WorldLoadEvent;
import de.butzlabben.world.event.WorldUnloadEvent; import de.butzlabben.world.event.WorldUnloadEvent;
import de.butzlabben.world.util.PlayerPositions; import de.butzlabben.world.util.PlayerPositions;
import de.butzlabben.world.util.PlayerWrapper;
import de.butzlabben.world.util.VersionUtil; import de.butzlabben.world.util.VersionUtil;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.bukkit.*; import org.bukkit.*;
@ -361,7 +362,7 @@ public class SystemWorld {
} }
}, 10L); }, 10L);
OfflinePlayer owner = Bukkit.getOfflinePlayer(WorldConfig.getWorldConfig(worldname).getOwner()); OfflinePlayer owner = PlayerWrapper.getOfflinePlayer(WorldConfig.getWorldConfig(worldname).getOwner());
DependenceConfig dc = new DependenceConfig(owner); DependenceConfig dc = new DependenceConfig(owner);
dc.setLastLoaded(); dc.setLastLoaded();
} }
@ -422,7 +423,7 @@ public class SystemWorld {
p.setGameMode(GameMode.CREATIVE); p.setGameMode(GameMode.CREATIVE);
} }
OfflinePlayer owner = Bukkit.getOfflinePlayer(WorldConfig.getWorldConfig(worldname).getOwner()); OfflinePlayer owner = PlayerWrapper.getOfflinePlayer(WorldConfig.getWorldConfig(worldname).getOwner());
DependenceConfig dc = new DependenceConfig(owner); DependenceConfig dc = new DependenceConfig(owner);
dc.setLastLoaded(); dc.setLastLoaded();
} }

View File

@ -17,7 +17,14 @@ public class WorldTemplateProvider {
private static final WorldTemplateProvider instance = new WorldTemplateProvider(); private static final WorldTemplateProvider instance = new WorldTemplateProvider();
private final HashMap<String, WorldTemplate> templates = new HashMap<>(); private final HashMap<String, WorldTemplate> templates = new HashMap<>();
private WorldTemplateProvider() { private WorldTemplateProvider() {
reload();
}
public void reload(){
templates.clear();
ConfigurationSection section = PluginConfig.getConfig().getConfigurationSection("worldtemplates.templates"); ConfigurationSection section = PluginConfig.getConfig().getConfigurationSection("worldtemplates.templates");
for (String key : section.getKeys(false)) { for (String key : section.getKeys(false)) {
String name = section.getString(key + ".name"); String name = section.getString(key + ".name");

View File

@ -63,6 +63,9 @@ database:
worlds_table_name: worlds_positions worlds_table_name: worlds_positions
# How the table with the saved player positions on the normal worlds should be named # How the table with the saved player positions on the normal worlds should be named
players_table_name: player_positions players_table_name: player_positions
# how should the uuid cache be stored
players_uuids: players_uuids
# Configure here your mysql connection # Configure here your mysql connection
mysql_settings: mysql_settings:
host: 127.0.0.1 host: 127.0.0.1