From eeedbbc7538026d116d83931208c48d3dd1b7283 Mon Sep 17 00:00:00 2001 From: Avior <2bazert@gmail.com> Date: Wed, 5 Sep 2018 20:11:38 +0200 Subject: [PATCH 1/4] quick --- .gitignore | 164 +--------- .gitlab-ci.yml | 60 ++++ .idea/.name | 1 - .idea/codeStyleSettings.xml | 9 - .idea/compiler.xml | 18 -- .idea/encodings.xml | 6 - .idea/kotlinc.xml | 7 - ...oglecode_json_simple_json_simple_1_1_1.xml | 13 - .../Maven__commons_lang_commons_lang_2_6.xml | 13 - .idea/libraries/Maven__junit_junit_4_10.xml | 13 - .../Maven__org_hamcrest_hamcrest_core_1_1.xml | 13 - .idea/misc.xml | 18 -- .idea/modules.xml | 8 - .idea/runConfigurations/BetterTP.xml | 27 -- .idea/runConfigurations/Windows_Server.xml | 11 - .idea/vcs.xml | 6 - BetterTP.iml | 35 --- buildNumber.properties | 3 + dependency-reduced-pom.xml | 139 +++++++++ pom.xml | 194 ++++++------ settings-security.xml | 3 + settings.xml | 12 + .../Minecraft/BetterTP/Api/API.java | 19 ++ .../DeltaWings/Minecraft/BetterTP/Charts.java | 32 ++ .../Minecraft/BetterTP/Commands/Bettertp.java | 63 +++- .../Minecraft/BetterTP/Commands/Home.java | 2 + .../Minecraft/BetterTP/Commands/Homelist.java | 3 +- .../Minecraft/BetterTP/Libs/FileManager.java | 89 ++++++ .../DeltaWings/Minecraft/BetterTP/Main.java | 12 +- .../Minecraft/BetterTP/Metrics.java | 284 ------------------ .../BetterTP/TabCompleter/BettertpTab.java | 9 +- .../BetterTP/TabCompleter/DelhomeTab.java | 20 ++ .../BetterTP/TabCompleter/HomeTab.java | 19 ++ 33 files changed, 592 insertions(+), 733 deletions(-) create mode 100644 .gitlab-ci.yml delete mode 100644 .idea/.name delete mode 100644 .idea/codeStyleSettings.xml delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/kotlinc.xml delete mode 100644 .idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml delete mode 100644 .idea/libraries/Maven__commons_lang_commons_lang_2_6.xml delete mode 100644 .idea/libraries/Maven__junit_junit_4_10.xml delete mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/runConfigurations/BetterTP.xml delete mode 100644 .idea/runConfigurations/Windows_Server.xml delete mode 100644 .idea/vcs.xml delete mode 100644 BetterTP.iml create mode 100644 buildNumber.properties create mode 100644 dependency-reduced-pom.xml create mode 100644 settings-security.xml create mode 100644 settings.xml create mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java create mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java create mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java delete mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Metrics.java create mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java create mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java diff --git a/.gitignore b/.gitignore index 8e6d769..78e6485 100644 --- a/.gitignore +++ b/.gitignore @@ -1,159 +1,9 @@ -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 +#VSCode +.vscode -# User-specific stuff: -.idea/workspace.xml -.idea/tasks.xml - -# Sensitive or high-churn files: -.idea/dataSources.ids -.idea/dataSources.xml -.idea/dataSources.local.xml -.idea/sqlDataSources.xml -.idea/dynamic.xml -.idea/uiDesigner.xml - -# Gradle: -.idea/gradle.xml -.idea/libraries - -# Mongo Explorer plugin: -.idea/mongoSettings.xml - -## File-based project format: -*.iws - -## Plugin-specific files: - -# IntelliJ -/out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties -src/test/ +#Java target/ -/.idea/dictionaries/ -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff: -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/dictionaries - -# Sensitive or high-churn files: -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.xml -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml - -# Gradle: -.idea/**/gradle.xml -.idea/**/libraries - -# CMake -cmake-build-debug/ - -# Mongo Explorer plugin: -.idea/**/mongoSettings.xml - -## File-based project format: - -## Plugin-specific files: - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin - -# JIRA plugin - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -### Maven template -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties - -# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored) -!/.mvn/wrapper/maven-wrapper.jar -### Linux template -*~ - -# temporary files which can be created if a process still has a handle open of a deleted file -.fuse_hidden* - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -# .nfs files are created when an open file is removed but is still being accessed -.nfs* -### Windows template -# Windows thumbnail cache files -Thumbs.db -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -Desktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msm -*.msp - -# Windows shortcuts -*.lnk -### Java template -# Compiled class file -*.class - -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear -*.zip -*.tar.gz -*.rar - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +.classpath +.project +.settings/ +bin/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..46bd39c --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,60 @@ +# This file is a template, and might need editing before it works on your project. +--- + +variables: + # This will supress any download for dependencies and plugins or upload messages which would clutter the console log. + # `showDateTime` will show the passed time in milliseconds. You need to specify `--batch-mode` to make this work. + MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" + # As of Maven 3.3.0 instead of this you may define these options in `.mvn/maven.config` so the same config is used + # when running from the command line. + # `installAtEnd` and `deployAtEnd` are only effective with recent version of the corresponding plugins. + MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" + +# Cache downloaded dependencies and plugins between builds. +# To keep cache across branches add 'key: "$CI_JOB_REF_NAME"' +cache: + paths: + - .m2/repository + +# For `master` branch run `mvn deploy` automatically. +# Here you need to decide whether you want to use JDK7 or 8. +# To get this working you need to define a volume while configuring your gitlab-ci-multi-runner. +# Mount your `settings.xml` as `/root/.m2/settings.xml` which holds your secrets. +# See https://maven.apache.org/settings.html +Build: + # Use stage test here, so the pages job may later pickup the created site. + stage: build + script: + - mvn -B clean install + - mvn -B test + # Archive up the built documentation site. + artifacts: + paths: + - target/ + image: maven + +Test: + # Use stage test here, so the pages job may later pickup the created site. + stage: test + script: + - mvn -B test + # Archive up the built documentation site. + artifacts: + paths: + - target/ + image: maven + +Deploy: + # Use stage test here, so the pages job may later pickup the created site. + stage: deploy + script: + - cp ./settings-security.xml $HOME/.m2/settings-security.xml + - cp ./settings.xml $HOME/.m2/settings.xml + - mvn -B deploy + only: + - tags + # Archive up the built documentation site. + artifacts: + paths: + - target + image: maven diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 991d088..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -BetterTP \ No newline at end of file diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100644 index 5555dd2..0000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 419d939..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index b26911b..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index 1c24f9a..0000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml b/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml deleted file mode 100644 index f3f3738..0000000 --- a/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml b/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml deleted file mode 100644 index 2ec8376..0000000 --- a/.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__junit_junit_4_10.xml b/.idea/libraries/Maven__junit_junit_4_10.xml deleted file mode 100644 index ed8bf5f..0000000 --- a/.idea/libraries/Maven__junit_junit_4_10.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml deleted file mode 100644 index acdf443..0000000 --- a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 8b5c9a3..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 7ddb7d9..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/BetterTP.xml b/.idea/runConfigurations/BetterTP.xml deleted file mode 100644 index 9d15b4f..0000000 --- a/.idea/runConfigurations/BetterTP.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations/Windows_Server.xml b/.idea/runConfigurations/Windows_Server.xml deleted file mode 100644 index 7d51cc1..0000000 --- a/.idea/runConfigurations/Windows_Server.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/BetterTP.iml b/BetterTP.iml deleted file mode 100644 index b4374a5..0000000 --- a/BetterTP.iml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - SPIGOT - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/buildNumber.properties b/buildNumber.properties new file mode 100644 index 0000000..d785c61 --- /dev/null +++ b/buildNumber.properties @@ -0,0 +1,3 @@ +#maven.buildNumber.plugin properties file +#Wed Aug 29 23:55:34 CEST 2018 +buildNumber=8 diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml new file mode 100644 index 0000000..ce6a92d --- /dev/null +++ b/dependency-reduced-pom.xml @@ -0,0 +1,139 @@ + + + 4.0.0 + net.DeltaWings + BetterTP + BetterTP + 1.0.0 + The best teleportation plugin + https://delta-wings.net/ + + + + org.apache.maven.wagon + wagon-ftp + 1.0-beta-6 + + + clean package + + + true + src/main/resources + + + ${project.name} + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + maven-shade-plugin + 3.1.1 + + + package + + shade + + + + + true + + + org.bstats + net.DeltaWings.Minecraft.BetterTP.Libs + + + + + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + bstats-repo + http://repo.bstats.org/content/repositories/releases/ + + + + + org.spigotmc + spigot-api + 1.13.1-R0.1-SNAPSHOT + provided + + + commons-lang + commons-lang + + + json-simple + com.googlecode.json-simple + + + guava + com.google.guava + + + gson + com.google.code.gson + + + snakeyaml + org.yaml + + + bungeecord-chat + net.md-5 + + + + + org.bukkit + bukkit + 1.13.1-R0.1-SNAPSHOT + provided + + + commons-lang + commons-lang + + + json-simple + com.googlecode.json-simple + + + guava + com.google.guava + + + gson + com.google.code.gson + + + snakeyaml + org.yaml + + + + + + + ftp-repository + ftp://ftp.cluster020.hosting.ovh.net/files/m2/ + + + + UTF-8 + + diff --git a/pom.xml b/pom.xml index af96b41..27a20c8 100644 --- a/pom.xml +++ b/pom.xml @@ -1,95 +1,115 @@ - 4.0.0 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - Delta-Wings - BetterTP - BetterTP - 1.0.0 - jar - The best teleportation plugin - https://delta-wings.net/ + net.DeltaWings + BetterTP - - UTF-8 - - - scm:svn:http://127.0.0.1/dummy - scm:svn:https://127.0.0.1/dummy - HEAD - http://127.0.0.1/dummy - - - ${project.artifactId}-${project.version} - clean package - - - 3.1 - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 + BetterTP + 1.0.0 + The best teleportation plugin + https://delta-wings.net/ - - - - org.codehaus.mojo - buildnumber-maven-plugin - 1.4 - - - buildnumber - validate - - create - - - - - {0,number} - - buildNumber - - false - false - unknownbuild - - - - - - src/main/resources - true - - - + jar - - - spigotmc-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - sonatype - https://oss.sonatype.org/content/groups/public/ - - + + UTF-8 + - - - org.spigotmc - spigot-api - 1.12-R0.1-SNAPSHOT - provided - - - org.bukkit - bukkit - 1.12-R0.1-SNAPSHOT - provided - - + + + ftp-repository + ftp://ftp.cluster020.hosting.ovh.net/files/m2/ + + + + + ${project.name} + clean package + + + org.apache.maven.wagon + wagon-ftp + 1.0-beta-6 + + + + + 3.1 + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.1 + + true + + + org.bstats + net.DeltaWings.Minecraft.BetterTP.Libs + + + + + + package + + shade + + + + + + + + + src/main/resources + true + + + + + + + spigotmc-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + bstats-repo + http://repo.bstats.org/content/repositories/releases/ + + + + + + org.spigotmc + spigot-api + 1.13.1-R0.1-SNAPSHOT + provided + + + + org.bukkit + bukkit + 1.13.1-R0.1-SNAPSHOT + provided + + + + org.bstats + bstats-bukkit + 1.2 + compile + + \ No newline at end of file diff --git a/settings-security.xml b/settings-security.xml new file mode 100644 index 0000000..e52a774 --- /dev/null +++ b/settings-security.xml @@ -0,0 +1,3 @@ + + {4UczYz5V0qoH2k+KKahTmRuVuEhDmgxOh5IGscdPrYc=} + \ No newline at end of file diff --git a/settings.xml b/settings.xml new file mode 100644 index 0000000..a6389c4 --- /dev/null +++ b/settings.xml @@ -0,0 +1,12 @@ + + + + + ftp-repository + deltawinbo + {KWW6K4bwZIsHwYBcgmca00UA3ot2WZR5giDpR+jCCXQ=} + + + \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java new file mode 100644 index 0000000..d745aa1 --- /dev/null +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java @@ -0,0 +1,19 @@ +package net.DeltaWings.Minecraft.BetterTP.Api; + +import java.util.ArrayList; + +import net.DeltaWings.Minecraft.BetterTP.Libs.Config; + +/** + * API + */ +public class API { + + public static ArrayList homelist(String player) { + Config c = new Config("data", player); + if(c.exist()) { + return c.getSection(""); + } + return new ArrayList<>(); + } +} \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java new file mode 100644 index 0000000..226bab8 --- /dev/null +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java @@ -0,0 +1,32 @@ +package net.DeltaWings.Minecraft.BetterTP; + +import java.io.File; +import java.util.concurrent.Callable; + +import org.bstats.bukkit.Metrics; + +import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager; + +public class Charts { + + private Main i = Main.getInstance(); + private String j = File.separator; + private final File d = new File(i.getDataFolder() + j + "data"); + + public Charts(Metrics metrics) { + + metrics.addCustomChart(new Metrics.SingleLineChart("home_number", new Callable(){ + + @Override + public Integer call() throws Exception { + Integer result = 0; + for (String conf : FileManager.listFiles(d)) { + Config c = new Config("data", conf); + result += c.getSection("").size(); + } + return result; + } + })); + } +} diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java index ac550ee..2487438 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java @@ -1,7 +1,9 @@ package net.DeltaWings.Minecraft.BetterTP.Commands; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -12,13 +14,23 @@ import java.io.IOException; public class Bettertp implements CommandExecutor { + Config m = new Config("", "messages"); + @Override public boolean onCommand(CommandSender s, Command unu2, String unu1, String[] a) { - Config m = new Config("", "messages"); + Config g = new Config("", "config"); if(s instanceof Player && s.hasPermission("bettertp.admin")) { Player p = (Player) s; - if(a.length == 2) { + if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("home")) { + if(a.length == 2) home(s, a[1], "home"); + else home(s, a[1], a[2]); + } else if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("delhome")) { + if(a.length == 2) delhome(s, a[1], "home"); + else delhome(s, a[1], a[2]); + } else if(a.length == 2 && a[0].equalsIgnoreCase("homelist")) { + homelist(s, a[1]); + } else if(a.length == 2) { if(a[0].equalsIgnoreCase("set")) { if(a[1].equalsIgnoreCase("spawn")) { Config c = null; @@ -98,4 +110,51 @@ public class Bettertp implements CommandExecutor { } return false; } + + + + + + private void set() { + + } + + private void help() { + + } + + private void home(CommandSender s, String player, String home) { + Config cp = new Config("data", player); + if(cp.exist()) { + String t = home+"."; + ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(cp.getString(t+"world")), cp.getDouble(t+"x"), cp.getDouble(t+"y"), cp.getDouble(t+"z"))); + } + ((Player) s).sendMessage("Sended you to " + player + " home : " + home); + } + + private void delhome(CommandSender s, String player, String home) { + Config cp = new Config("data", player); + if(cp.exist() && cp.isSet(home)) { + cp.set(home, null); + try { + cp.save(); + } catch ( IOException e ) { + e.printStackTrace(); + s.sendMessage("Error, Please call an Admin !"); + } + s.sendMessage(m.getString("home.deleted").replace("[home]", home).replace("&", "§")); + } + } + + private void homelist(CommandSender s, String player) { + Config c = new Config("", "messages"); + s.sendMessage(c.getString("help.top").replace("[help]", "Homelist").replace("&", "§")); + for(String a : API.homelist(s.getName())) { + s.sendMessage(("&4| &9").replace("&", "§") + a); + } + s.sendMessage(c.getString("help.bottom").replace("[help]", "Homelist").replace("&", "§")); + + } } + + diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java index 677876e..e5cdcb4 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java @@ -53,3 +53,5 @@ public class Home implements CommandExecutor { return false; } } + +// /home [home] \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Homelist.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Homelist.java index a1b7628..51e91ba 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Homelist.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Homelist.java @@ -1,6 +1,7 @@ package net.DeltaWings.Minecraft.BetterTP.Commands; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -13,7 +14,7 @@ public class Homelist implements CommandExecutor { if(s instanceof Player) { Config c = new Config("", "messages"); s.sendMessage(c.getString("help.top").replace("[help]", "Homelist").replace("&", "§")); - for(String a : new Config("data", s.getName()).getSection("")) { + for(String a : API.homelist(s.getName())) { s.sendMessage(("&4| &9").replace("&", "§") + a); } s.sendMessage(c.getString("help.bottom").replace("[help]", "Homelist").replace("&", "§")); diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java new file mode 100644 index 0000000..631fcc9 --- /dev/null +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java @@ -0,0 +1,89 @@ +package net.DeltaWings.Minecraft.BetterTP.Libs; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +public class FileManager { + + + public static List listFiles(String path) { + String[] t = new File(path).list(); + if(t == null) return new ArrayList<>(); + else return Arrays.asList(t); + } + + public static List listFiles(File path) { + String[] t = path.list(); + if(t == null) return new ArrayList<>(); + else return Arrays.asList(t); + } + + public static void delete(File path) { + path.delete(); + } + + public static void delete(String path) { + File f = new File(path); + f.delete(); + } + + public static void createFile(String path) { + try { + new File(path).createNewFile(); + } catch ( IOException e ) { + e.printStackTrace(); + } + } + + public static void createFile(File path) { + try { + path.createNewFile(); + } catch ( IOException e ) { + e.printStackTrace(); + } + } + + public static void createFolder(File path) { + path.mkdirs(); + } + + public static void createFolder(String path) { + new File(path).mkdirs(); + } + + public static void archive(String srcFolder, String destZipFile) { + try { + FileOutputStream f = new FileOutputStream(destZipFile); + ZipOutputStream z = new ZipOutputStream(f); + b(srcFolder, z); + z.close(); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + + private static void a(String p, String s, ZipOutputStream z) throws Exception { + File f = new File(s); + if (f.isDirectory()) b(s, z); + else { + byte[] b = new byte[1024]; + int l; + FileInputStream i = new FileInputStream(s); + z.putNextEntry(new ZipEntry(p + "/" + f.getName())); + while ((l = i.read(b)) > 0) z.write(b, 0, l); + } + } + + private static void b(String s, ZipOutputStream z) throws Exception { + File f = new File(s); + String[] l = f.list(); + if(l != null) for (String n : l) a(f.getName(), s + File.separator + n, z); + } +} \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java index 4d6f394..2fbeed8 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java @@ -8,6 +8,8 @@ import org.bukkit.command.PluginCommand; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import org.bstats.bukkit.Metrics; + import java.io.IOException; import java.util.logging.Level; @@ -36,6 +38,8 @@ public final class Main extends JavaPlugin { debug("Loading Variables"); PluginManager pm = getServer().getPluginManager(); PluginCommand bettertp = getCommand("Bettertp"); + PluginCommand home = getCommand("Home"); + PluginCommand delhome = getCommand("Delhome"); debug("Loaded variables"); debug("Loading Configuration"); @@ -59,15 +63,17 @@ public final class Main extends JavaPlugin { bettertp.setTabCompleter(new BettertpTab()); getCommand("Spawn").setExecutor(new Spawn()); getCommand("Lobby").setExecutor(new Lobby()); - getCommand("Home").setExecutor(new Home()); + home.setExecutor(new Home()); + home.setTabCompleter(new HomeTab()); getCommand("Sethome").setExecutor(new Sethome()); - getCommand("Delhome").setExecutor(new Delhome()); + delhome.setExecutor(new Delhome()); + delhome.setTabCompleter(new DelhomeTab()); getCommand("Homelist").setExecutor(new Homelist()); debug("Loaded Commands"); debug("Enabling Metrics"); - //new Metrics(this); + new Charts(new Metrics(this)); log("Metrics Started : https://bstats.org/plugin/bukkit/plugin/"); log("Loaded !"); diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Metrics.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Metrics.java deleted file mode 100644 index 44afacb..0000000 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Metrics.java +++ /dev/null @@ -1,284 +0,0 @@ -package net.DeltaWings.Minecraft.BetterTP; - -import org.bukkit.Bukkit; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.ServicePriority; -import org.bukkit.plugin.java.JavaPlugin; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; - -import javax.net.ssl.HttpsURLConnection; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.net.URL; -import java.util.Timer; -import java.util.TimerTask; -import java.util.UUID; -import java.util.logging.Level; -import java.util.zip.GZIPOutputStream; - -/** - * bStats collects some data for plugin authors. - * - * Check out https://bStats.org/ to learn more about bStats! - */ -public class Metrics { - - static { - // Maven's Relocate is clever and changes strings, too. So we have to use this little "trick" ... :D - final String defaultPackage = new String(new byte[] { 'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's' }); - final String examplePackage = new String(new byte[] { 'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e' }); - // We want to make sure nobody just copy & pastes the example and use the wrong package names - if (Metrics.class.getPackage().getName().equals(defaultPackage) || Metrics.class.getPackage().getName().equals(examplePackage)) { - throw new IllegalStateException("bStats Metrics class has not been relocated correctly!"); - } - } - - // The version of this bStats class - public static final int B_STATS_VERSION = 1; - - // The url to which the data is sent - private static final String URL = "https://bStats.org/submitData/bukkit"; - - // Should failed requests be logged? - private static boolean logFailedRequests; - - // The uuid of the server - private static String serverUUID; - - // The plugin - private final JavaPlugin plugin; - - /** - * Class constructor. - * - * @param plugin The plugin which stats should be submitted. - */ - public Metrics(JavaPlugin plugin) { - if (plugin == null) { - throw new IllegalArgumentException("Plugin cannot be null!"); - } - this.plugin = plugin; - - // Get the config file - File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats"); - File configFile = new File(bStatsFolder, "config.yml"); - YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); - - // Check if the config file exists - if (!config.isSet("serverUuid")) { - - // Add default values - config.addDefault("enabled", true); - // Every server gets it's unique random id. - config.addDefault("serverUuid", UUID.randomUUID().toString()); - // Should failed request be logged? - config.addDefault("logFailedRequests", false); - - // Inform the server owners about bStats - config.options().header( - "bStats collects some data for plugin authors like how many servers are using their plugins.\n" + - "To honor their work, you should not disable it.\n" + - "This has nearly no effect on the server performance!\n" + - "Check out https://bStats.org/ to learn more :)" - ).copyDefaults(true); - try { - config.save(configFile); - } catch (IOException ignored) { } - } - - // Load the data - serverUUID = config.getString("serverUuid"); - logFailedRequests = config.getBoolean("logFailedRequests", false); - if (config.getBoolean("enabled", true)) { - boolean found = false; - // Search for all other bStats Metrics classes to see if we are the first one - for (Class service : Bukkit.getServicesManager().getKnownServices()) { - try { - service.getField("B_STATS_VERSION"); // Our identifier :) - found = true; // We aren't the first - break; - } catch (NoSuchFieldException ignored) { } - } - // Register our service - Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); - if (!found) { - // We are the first! - startSubmitting(); - } - } - } - - /** - * Starts the Scheduler which submits our data every 30 minutes. - */ - private void startSubmitting() { - final Timer timer = new Timer(true); // We use a timer cause the Bukkit scheduler is affected by server lags - timer.scheduleAtFixedRate(new TimerTask() { - @Override - public void run() { - if (!plugin.isEnabled()) { // Plugin was disabled - timer.cancel(); - return; - } - // Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler - // Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;) - Bukkit.getScheduler().runTask(plugin, () -> submitData()); - } - }, 1000*60*5, 1000*60*30); - // Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start - // WARNING: Changing the frequency has no effect but your plugin WILL be blocked/deleted! - // WARNING: Just don't do it! - } - - /** - * Gets the plugin specific data. - * This method is called using Reflection. - * - * @return The plugin specific data. - */ - public JSONObject getPluginData() { - JSONObject data = new JSONObject(); - - String pluginName = plugin.getDescription().getName(); - String pluginVersion = plugin.getDescription().getVersion(); - - data.put("pluginName", pluginName); // Append the name of the plugin - data.put("pluginVersion", pluginVersion); // Append the version of the plugin - JSONArray customCharts = new JSONArray(); - data.put("customCharts", customCharts); - - return data; - } - - /** - * Gets the server specific data. - * - * @return The server specific data. - */ - private JSONObject getServerData() { - // Minecraft specific data - int playerAmount = Bukkit.getOnlinePlayers().size(); - int onlineMode = Bukkit.getOnlineMode() ? 1 : 0; - String bukkitVersion = Bukkit.getVersion(); - bukkitVersion = bukkitVersion.substring(bukkitVersion.indexOf("MC: ") + 4, bukkitVersion.length() - 1); - - // OS/Java specific data - String javaVersion = System.getProperty("java.version"); - String osName = System.getProperty("os.name"); - String osArch = System.getProperty("os.arch"); - String osVersion = System.getProperty("os.version"); - int coreCount = Runtime.getRuntime().availableProcessors(); - - JSONObject data = new JSONObject(); - - data.put("serverUUID", serverUUID); - - data.put("playerAmount", playerAmount); - data.put("onlineMode", onlineMode); - data.put("bukkitVersion", bukkitVersion); - - data.put("javaVersion", javaVersion); - data.put("osName", osName); - data.put("osArch", osArch); - data.put("osVersion", osVersion); - data.put("coreCount", coreCount); - - return data; - } - - /** - * Collects the data and sends it afterwards. - */ - private void submitData() { - final JSONObject data = getServerData(); - - JSONArray pluginData = new JSONArray(); - // Search for all other bStats Metrics classes to get their plugin data - for (Class service : Bukkit.getServicesManager().getKnownServices()) { - try { - service.getField("B_STATS_VERSION"); // Our identifier :) - } catch (NoSuchFieldException ignored) { - continue; // Continue "searching" - } - // Found one! - try { - pluginData.add(service.getMethod("getPluginData").invoke(Bukkit.getServicesManager().load(service))); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { } - } - - data.put("plugins", pluginData); - - // Create a new thread for the connection to the bStats server - new Thread(() -> { - try { - // Send the data - sendData(data); - } catch (Exception e) { - // Something went wrong! :( - if (logFailedRequests) { - plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e); - } - } - }).start(); - } - - /** - * Sends the data to the bStats server. - * - * @param data The data to send. - * @throws Exception If the request failed. - */ - private static void sendData(JSONObject data) throws Exception { - if (data == null) { - throw new IllegalArgumentException("Data cannot be null!"); - } - if (Bukkit.isPrimaryThread()) { - throw new IllegalAccessException("This method must not be called from the main thread!"); - } - HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection(); - - // Compress the data to save bandwidth - byte[] compressedData = compress(data.toString()); - - // Add headers - connection.setRequestMethod("POST"); - connection.addRequestProperty("Accept", "application/json"); - connection.addRequestProperty("Connection", "close"); - connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request - connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); - connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format - connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); - - // Send data - connection.setDoOutput(true); - DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.write(compressedData); - outputStream.flush(); - outputStream.close(); - - connection.getInputStream().close(); // We don't care about the response - Just send our data :) - } - - /** - * Gzips the given String. - * - * @param str The string to gzip. - * @return The gzipped String. - * @throws IOException If the compression failed. - */ - private static byte[] compress(final String str) throws IOException { - if (str == null) { - return null; - } - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - GZIPOutputStream gzip = new GZIPOutputStream(outputStream); - gzip.write(str.getBytes("UTF-8")); - gzip.close(); - return outputStream.toByteArray(); - } - -} \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java index 84cf052..231a880 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java @@ -1,6 +1,9 @@ package net.DeltaWings.Minecraft.BetterTP.TabCompleter; import net.DeltaWings.Minecraft.BetterTP.Main; +import net.DeltaWings.Minecraft.BetterTP.Api.API; +import net.DeltaWings.Minecraft.BetterTP.Libs.Config; + import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; @@ -11,7 +14,7 @@ import java.util.List; public class BettertpTab implements TabCompleter { - private final String[] menu = new String[]{"set", "del", "delete", "help", "config"}, setdel = new String[]{"spawn","lobby"}, confopt = new String[]{""}; + private final String[] menu = new String[]{"set", "del", "delete", "help", "home", "delhome"}, setdel = new String[]{"spawn","lobby"}, confopt = new String[]{""}; @Override public List onTabComplete(CommandSender s, Command c, String unused, String[] a) { @@ -36,6 +39,10 @@ public class BettertpTab implements TabCompleter { for (String t : y) if (t.startsWith(a[1].toLowerCase())) l.add(t); return l; } else return Arrays.asList(y); + } else if(a.length == 3) { + if(a[0].equalsIgnoreCase("home") || a[0].equalsIgnoreCase("delhome")) { + return API.homelist(a[1]); + } } return null; } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java new file mode 100644 index 0000000..47671a3 --- /dev/null +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java @@ -0,0 +1,20 @@ +package net.DeltaWings.Minecraft.BetterTP.TabCompleter; + +import net.DeltaWings.Minecraft.BetterTP.Libs.Config; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; + +import java.util.List; + +public class DelhomeTab implements TabCompleter { + + @Override + public List onTabComplete(CommandSender s, Command u1, String unused, String[] a) { + if( a.length == 1) { + Config c = new Config("data", s.getName()); + return c.getSection(""); + } else return null; + } +} diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java new file mode 100644 index 0000000..df61376 --- /dev/null +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java @@ -0,0 +1,19 @@ +package net.DeltaWings.Minecraft.BetterTP.TabCompleter; + +import net.DeltaWings.Minecraft.BetterTP.Api.API; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; + +import java.util.List; + +public class HomeTab implements TabCompleter { + + @Override + public List onTabComplete(CommandSender s, Command u1, String unused, String[] a) { + if( a.length == 1) { + return API.homelist(s.getName()); + } else return null; + } +} -- 2.47.2 From f5c0b654f44cb6981eabdd05f2f26a9ab79de4ac Mon Sep 17 00:00:00 2001 From: Avior <2bazert@gmail.com> Date: Tue, 11 Sep 2018 23:40:00 +0200 Subject: [PATCH 2/4] WIP --- .../Minecraft/BetterTP/Api/API.java | 31 ++- .../DeltaWings/Minecraft/BetterTP/Charts.java | 32 ---- .../Minecraft/BetterTP/Commands/Bettertp.java | 181 ++++++++---------- .../Minecraft/BetterTP/Commands/Delhome.java | 55 ++---- .../Minecraft/BetterTP/Commands/Home.java | 43 ++--- .../Commands/{Lobby.java => LobbySpawn.java} | 14 +- .../Minecraft/BetterTP/Commands/Sethome.java | 74 +++---- .../Minecraft/BetterTP/Commands/Spawn.java | 39 ---- .../Minecraft/BetterTP/Libs/FileManager.java | 9 +- .../DeltaWings/Minecraft/BetterTP/Main.java | 47 ++++- .../BetterTP/TabCompleter/BettertpTab.java | 34 ++-- .../BetterTP/TabCompleter/DelhomeTab.java | 15 +- .../BetterTP/TabCompleter/HomeTab.java | 12 +- src/main/resources/plugin.yml | 9 +- 14 files changed, 272 insertions(+), 323 deletions(-) delete mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java rename src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/{Lobby.java => LobbySpawn.java} (69%) delete mode 100644 src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Spawn.java diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java index d745aa1..51e7cd2 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Api/API.java @@ -1,19 +1,48 @@ package net.DeltaWings.Minecraft.BetterTP.Api; +import java.io.File; import java.util.ArrayList; +import java.util.ListIterator; +import net.DeltaWings.Minecraft.BetterTP.Main; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager; /** * API */ public class API { + private static final String datafolder = "data"; + private static final String playerfolder = "players"; + + public static String getDataFolder() { + return datafolder; + } + + public static String getPlayersFolder() { + return getDataFolder() + File.separator + playerfolder; + } + public static ArrayList homelist(String player) { - Config c = new Config("data", player); + Config c = new Config(getPlayersFolder(), player); if(c.exist()) { return c.getSection(""); } return new ArrayList<>(); } + + public static ArrayList listPlayersWithHome() { + return listReplace(FileManager.listFiles(Main.getInstance().getDataFolder() + File.separator + getPlayersFolder()), ".yml", ""); + } + + //functions without plugin link + + public static ArrayList listReplace(ArrayList list, String replaced, String replacement) { + ListIterator it = list.listIterator(); + while(it.hasNext()) { + it.set(it.next().replace(replaced, replacement)); + } + return list; + } } \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java deleted file mode 100644 index 226bab8..0000000 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Charts.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.DeltaWings.Minecraft.BetterTP; - -import java.io.File; -import java.util.concurrent.Callable; - -import org.bstats.bukkit.Metrics; - -import net.DeltaWings.Minecraft.BetterTP.Libs.Config; -import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager; - -public class Charts { - - private Main i = Main.getInstance(); - private String j = File.separator; - private final File d = new File(i.getDataFolder() + j + "data"); - - public Charts(Metrics metrics) { - - metrics.addCustomChart(new Metrics.SingleLineChart("home_number", new Callable(){ - - @Override - public Integer call() throws Exception { - Integer result = 0; - for (String conf : FileManager.listFiles(d)) { - Config c = new Config("data", conf); - result += c.getSection("").size(); - } - return result; - } - })); - } -} diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java index 2487438..d725900 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Bettertp.java @@ -8,6 +8,7 @@ import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import java.io.IOException; @@ -15,125 +16,94 @@ import java.io.IOException; public class Bettertp implements CommandExecutor { Config m = new Config("", "messages"); + Config c = new Config("", "config"); @Override public boolean onCommand(CommandSender s, Command unu2, String unu1, String[] a) { - - Config g = new Config("", "config"); - if(s instanceof Player && s.hasPermission("bettertp.admin")) { - Player p = (Player) s; - if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("home")) { - if(a.length == 2) home(s, a[1], "home"); - else home(s, a[1], a[2]); - } else if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("delhome")) { - if(a.length == 2) delhome(s, a[1], "home"); - else delhome(s, a[1], a[2]); - } else if(a.length == 2 && a[0].equalsIgnoreCase("homelist")) { - homelist(s, a[1]); - } else if(a.length == 2) { - if(a[0].equalsIgnoreCase("set")) { - if(a[1].equalsIgnoreCase("spawn")) { - Config c = null; - if(g.getString("spawn.work").equalsIgnoreCase("server")) c = new Config("data/spawn", "config"); - else if(g.getString("spawn.work").equalsIgnoreCase("world")) c = new Config("data/spawn", ((Player) s).getWorld().getName()); - if(c != null && !c.exist()) try { - c.create(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error please call an administrator !"); - } - Location l = p.getLocation(); - c.set("world", l.getWorld().getName()); - c.set("x", l.getX()); - c.set("y", l.getY()); - c.set("z", l.getZ()); - try { - c.save(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error please call an administrator !"); - } - s.sendMessage(m.getString("spawn.set").replace("&","§")); - - return true; - } else if(a[1].equalsIgnoreCase("lobby")) { - Config c = new Config("data/lobby", "config"); - if(!c.exist()) try { - c.create(); - } catch (IOException e) { - e.printStackTrace(); - s.sendMessage("Error Please call an administrator !"); - } - Location l = p.getLocation(); - c.set("world", l.getWorld().getName()); - c.set("x", l.getX()); - c.set("y", l.getY()); - c.set("z", l.getZ()); - try { - c.save(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error Please call an administrator !"); - } - s.sendMessage(m.getString("lobby.set").replace("&","§")); - return true; - } - } else if(a[0].equalsIgnoreCase("del") || a[0].equalsIgnoreCase("delete")) { - if(a[1].equalsIgnoreCase("spawn")) { - if(g.getString("spawn.work").equalsIgnoreCase("server")) new Config("data/spawn", "config").delete(); - else if(g.getString("spawn.work").equalsIgnoreCase("world")) new Config("data/spawn", ((Player) s).getWorld().getName()).delete(); - s.sendMessage(m.getString("spawn.deleted").replace("&","§")); - return true; - } else if(a[1].equalsIgnoreCase("lobby")) { - new Config("data/lobby", "config").delete(); - s.sendMessage(m.getString("lobby.deleted").replace("&","§")); - return true; - } - } - } else if(a.length == 1) { - if(a[0].equalsIgnoreCase("help")) { - Config c = new Config("", "messages"); - p.sendMessage(c.getString("help.top").replace("[help]", "BetterTP").replace("&", "§")); - p.sendMessage("&4| &9/btp &lset &llobby/spawn".replace("&", "§")); - p.sendMessage("&4| &9To set spawn or lobby".replace("&", "§")); - p.sendMessage("&4| &9/btp &ldel &llobby/spawn".replace("&", "§")); - p.sendMessage("&4| &9To delete spawn/lobby".replace("&", "§")); - p.sendMessage(c.getString("help.bottom").replace("[help]", "BetterTP").replace("&", "§")); + if((s instanceof Player && s.hasPermission("bettertp.admin")) || s instanceof ConsoleCommandSender) { + if(a.length == 1) { + if(a[0].equalsIgnoreCase("help")) help(s); + return true; + } else if(a.length >= 2 && a.length <= 3) { + if(a.length == 2 && (a[0].equalsIgnoreCase("set") || a[0].equalsIgnoreCase("del"))) { + if(a[1].equalsIgnoreCase("spawn") || a[1].equalsIgnoreCase("lobby")) set(s, a[1]); + else if(a[1].equalsIgnoreCase("spawn") || a[1].equalsIgnoreCase("lobby")) del(s, a[1]); return true; + } else if(a[0].equalsIgnoreCase("home") || a[0].equalsIgnoreCase("delhome") || a[0].equalsIgnoreCase("homelist")) { + String home = a.length == 3 ? a[2] : "home"; //check if player has specified a home + if(a[0].equalsIgnoreCase("home")) home(s, a[1], home); + if(a[0].equalsIgnoreCase("homelist")) homelist(s, a[1]); + if(a[0].equalsIgnoreCase("delhome")) delhome(s, a[1], home); + return true; + } else return false; + } else return false; + } else { + //sendmessage you don't have the permission + return true; + } + } + + private void set(CommandSender s, String whattoset) { + if(s instanceof ConsoleCommandSender) { + s.sendMessage("The console can't use this command"); + } else { + Config t = new Config(API.getDataFolder(), whattoset); + if(t.exist()) { + //sendmessage spawn/lobby already set + } else { + try { + t.create(); + Location l = ((Player) s).getLocation(); + t.set("world", l.getWorld().getName()); + t.set("x", l.getX()); + t.set("y", l.getY()); + t.set("z", l.getZ()); + t.save(); + //sendmessage spawn/lobby successfully set ! + } catch (IOException e) { + e.printStackTrace(); + //sendmessage error, writing the configuration file please report } } - } else if(s instanceof Player){ - s.sendMessage(m.getString("global.permission").replace("&", "§")); - return true; - } else { - s.sendMessage(m.getString("global.not-console")); } - return false; } - - - - - private void set() { - + private void del(CommandSender s, String whattoset) { + Config t = new Config(API.getDataFolder(), whattoset); + if(t.exist()) { + try { + t.delete(); + //sendmssage successfully removed the spawn/lobby + } catch (Exception e) { + e.printStackTrace(); + //sendmessage error, config couldn't be deleted + } + } else { + //sendmessage there is no spawn/lobby + } } - private void help() { - + private void help(CommandSender s) { + s.sendMessage(m.getString("help.top").replace("[help]", "BetterTP").replace("&", "§")); + s.sendMessage("&4| &9/btp &lset &llobby/spawn".replace("&", "§")); + s.sendMessage("&4| &9To set spawn or lobby".replace("&", "§")); + s.sendMessage("&4| &9/btp &ldel &llobby/spawn".replace("&", "§")); + s.sendMessage("&4| &9To delete spawn/lobby".replace("&", "§")); + s.sendMessage(m.getString("help.bottom").replace("[help]", "BetterTP").replace("&", "§")); } private void home(CommandSender s, String player, String home) { - Config cp = new Config("data", player); - if(cp.exist()) { + Config cp = new Config(API.getPlayersFolder(), player); + if(cp.exist() && cp.isSet(home)) { String t = home+"."; ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(cp.getString(t+"world")), cp.getDouble(t+"x"), cp.getDouble(t+"y"), cp.getDouble(t+"z"))); - } - ((Player) s).sendMessage("Sended you to " + player + " home : " + home); + ((Player) s).sendMessage("Sended you to " + player + " home : " + home); + } else ; //sendmessage player has no home "homename" + } private void delhome(CommandSender s, String player, String home) { - Config cp = new Config("data", player); + Config cp = new Config(API.getPlayersFolder(), player); if(cp.exist() && cp.isSet(home)) { cp.set(home, null); try { @@ -143,7 +113,7 @@ public class Bettertp implements CommandExecutor { s.sendMessage("Error, Please call an Admin !"); } s.sendMessage(m.getString("home.deleted").replace("[home]", home).replace("&", "§")); - } + } else ; //send message player has no home "homename" } private void homelist(CommandSender s, String player) { @@ -158,3 +128,12 @@ public class Bettertp implements CommandExecutor { } +/* + /btp + set + del + help + homelist + home [homename] + selhome 2) return false; //too many arguments + Config c = new Config(API.getPlayersFolder(), s.getName()); + String homename = a.length == 0 ? "home" : a[0]; + try { + if(c.exist() && c.isSet(homename)) { + c.set(homename, null); + if(c.getSection("").size() == 0) { + c.delete(); + } else c.save(); + //sendmessage home deleted } else { - s.sendMessage(m.getString("home.dont-exist").replace("[home]", a[0]).replace("&", "§")); - return true; - } - } else if(a.length == 0) { - if(c.isSet("home")) { - c.set("home", null); - try { - c.save(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error, Please call an Admin !"); - } - s.sendMessage(m.getString("home.deleted").replace("[home]", "home").replace("&", "§")); - return true; - } else { - s.sendMessage(m.getString("home.dont-exist").replace("[home]", "home").replace("&", "§")); - return true; + //sendmessage home don't exist } + } catch (Exception e) { + e.printStackTrace(); + //sendmessage error happened } - } else if(s instanceof Player && !s.hasPermission("bettertp.delhome")) { - s.sendMessage(m.getString("global.permission").replace("&", "§")); + return true; + } else if(s instanceof ConsoleCommandSender) { + //sendmessage console can't use this command return true; } else { - s.sendMessage(m.getString("global.not-console")); + //sendmessage missing permission return true; } - return false; } } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java index e5cdcb4..93bb64d 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java @@ -1,5 +1,6 @@ package net.DeltaWings.Minecraft.BetterTP.Commands; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import org.bukkit.Bukkit; @@ -7,50 +8,34 @@ import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; public class Home implements CommandExecutor { + private final Config m = new Config("", "messages"); @Override public boolean onCommand(CommandSender s, Command command, String label, String[] a) { if(s instanceof Player && s.hasPermission("bettertp.home")) { - Config c = new Config("data", s.getName()); - if(c.exist()) { - if(a.length == 0) { - if ( c.isSet("home") ) { - String t = "home."; - ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(t+"world")), c.getDouble(t+"x"), c.getDouble(t+"y"), c.getDouble(t+"z"))); - s.sendMessage(m.getString("home.teleported").replace("[home]", "home").replace("&", "§")); - return true; - } else { - s.sendMessage(m.getString("home.dont-exist").replace("&", "§").replace("[home]", "Home")); - return true; - } - } else if(a.length == 1) { - if ( c.isSet(a[0]) ) { - String t = a[0] + "."; - ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(t+"world")), c.getDouble(t+"x"), c.getDouble(t+"y"), c.getDouble(t+"z"))); - - s.sendMessage(m.getString("home.teleported").replace("[home]", a[0]).replace("&", "§")); - return true; - } else { - s.sendMessage(m.getString("home.dont-exist").replace("&", "§").replace("[home]", a[0])); - return true; - } - } + if(a.length > 1) return false; //too many arguments + Config c = new Config(API.getPlayersFolder(), s.getName()); + String homename = a.length == 0 ? "home" : a[0]; + if(c.isSet(homename)) { + ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(homename+".world")), c.getDouble(homename+".x"), c.getDouble(homename+".y"), c.getDouble(homename+".z"))); + //sendmessage teleported to home home + return true; } else { - s.sendMessage(m.getString("home.dont-exist")); + //sendmessage home don't exist return true; } - } else if(s instanceof Player && !s.hasPermission("bettertp.home")) { - s.sendMessage(m.getString("global.permission").replace("&", "§")); + } else if(s instanceof ConsoleCommandSender) { + //sendmessage console can't use that command return true; } else { - s.sendMessage(m.getString("global.not-console")); + //sendmessage you don't have the permission return true; } - return false; } } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Lobby.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/LobbySpawn.java similarity index 69% rename from src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Lobby.java rename to src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/LobbySpawn.java index 6a83178..589fdd0 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Lobby.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/LobbySpawn.java @@ -1,5 +1,6 @@ package net.DeltaWings.Minecraft.BetterTP.Commands; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -8,23 +9,24 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class Lobby implements CommandExecutor { +public class LobbySpawn implements CommandExecutor { private final Config m = new Config("", "messages"); @Override - public boolean onCommand(CommandSender s, Command unu1, String unu2, String[] unu3) { + public boolean onCommand(CommandSender s, Command unu1, String command, String[] unu3) { + if(command.equalsIgnoreCase("hub")) command = "lobby"; if(s instanceof Player ) { - if(s.hasPermission("bettertp.lobby")) { - Config c = new Config("data/lobby", "config"); + if(s.hasPermission("bettertp."+command)) { + Config c = new Config(API.getDataFolder(), command); if(c.exist()) { Double y = c.getDouble("x", (double) -1); if(y != -1) { ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString("world")), c.getDouble("x"), c.getDouble("y"), c.getDouble("z"))); - s.sendMessage(m.getString("lobby.teleported").replace("&", "§")); + s.sendMessage(m.getString(command+".teleported").replace("&", "§")); return true; } } else { - s.sendMessage(m.getString("lobby.not-set").replace("&", "§")); + s.sendMessage(m.getString(command+".not-set").replace("&", "§")); return true; } } else { diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java index 442b02a..ffde39d 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java @@ -1,15 +1,16 @@ package net.DeltaWings.Minecraft.BetterTP.Commands; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import java.io.IOException; -import java.util.ArrayList; public class Sethome implements CommandExecutor { @@ -19,62 +20,45 @@ public class Sethome implements CommandExecutor { @Override public boolean onCommand(CommandSender s, Command command, String label, String[] a) { if(s instanceof Player && s.hasPermission("bettertp.sethome")) { - Config c = new Config("data", s.getName()); - ArrayList r = new ArrayList<>(); + if(a.length > 2) return false; //too many arguments + Config c = new Config(API.getPlayersFolder(), s.getName()); + Integer maxhomes = -1; for(String e : mc.getSection("maxhomes")) { - if(s.hasPermission("bettertp.max."+e)) r.add(e); + if(s.hasPermission("bettertp.max."+e)) { + Integer max = mc.getInt("maxhomes."+e, 0); + maxhomes = max > maxhomes ? max : maxhomes; //if max > maxhome then maxhome = max + } } - Boolean p = false; - for(String e : r) { - if(c.getSection("").size() == mc.getInt("maxhomes." + e)) p = true; - } - if(p) { + if(c.getSection("").size() >= maxhomes) { //Player already have max number of home s.sendMessage(m.getString("home.max").replace("[max]", c.getSection("").size() + "").replace("&", "§")); return true; - } else { - if(!c.exist()) try { - c.create(); + } else { //player can have more homes + try { + if(!c.exist()) c.create(); + String homename = a.length == 0 ? "home" : a[0]; + if(c.isSet(homename)) { + //sendmessage home already set please delete it before (/delhome) + } else { + Location l = ((Player) s).getLocation(); + c.set(homename+".world", l.getWorld().getName()); + c.set(homename+".x", l.getX()); + c.set(homename+".y", l.getY()); + c.set(homename+".z", l.getZ()); + c.save(); + //sendmessage home set + } } catch ( IOException e ) { e.printStackTrace(); s.sendMessage("Error, Please call an Admin !"); } - if(a.length == 0) { - Location l = ((Player) s).getLocation(); - c.set("home.world", l.getWorld().getName()); - c.set("home.x", l.getX()); - c.set("home.y", l.getY()); - c.set("home.z", l.getZ()); - try { - c.save(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error, Please call an Admin !"); - } - s.sendMessage(m.getString("home.set").replace("[home]", "home").replace("&", "§")); - return true; - } else if(a.length == 1) { - Location l = ((Player) s).getLocation(); - c.set(a[0] + ".world", l.getWorld().getName()); - c.set(a[0] + ".x", l.getX()); - c.set(a[0] + ".y", l.getY()); - c.set(a[0] + ".z", l.getZ()); - try { - c.save(); - } catch ( IOException e ) { - e.printStackTrace(); - s.sendMessage("Error, Please call an Admin !"); - } - s.sendMessage(m.getString("home.set").replace("[home]", a[0]).replace("&", "§")); - return true; - } + return true; } - } else if(s instanceof Player && !s.hasPermission("bettertp.sethome")) { - s.sendMessage(m.getString("global.permission").replace("&", "§")); + } else if(s instanceof ConsoleCommandSender) { + //sendmessage can't be used as the console return true; } else { - s.sendMessage(m.getString("global.not-console")); + //sendmessage don't have the permission return true; } - return false; } } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Spawn.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Spawn.java deleted file mode 100644 index e5cd300..0000000 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Spawn.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.DeltaWings.Minecraft.BetterTP.Commands; - -import net.DeltaWings.Minecraft.BetterTP.Libs.Config; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class Spawn implements CommandExecutor { - - @Override - public boolean onCommand(CommandSender s, Command d, String l, String[] a) { - Config m = new Config("", "messages"); - if(s instanceof Player) { - if(s.hasPermission("bettertp.spawn")) { - Config g = new Config("", "config"); - Config c = null; - if(g.getString("spawn.work").equalsIgnoreCase("server")) c = new Config("data/spawn", "config"); - else if(g.getString("spawn.work").equalsIgnoreCase("world")) c = new Config("data/spawn", ((Player) s).getWorld().getName()); - if(c != null && c.exist()) { - ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString("world")), c.getDouble("x"), c.getDouble("y"), c.getDouble("z"))); - s.sendMessage(m.getString("spawn.teleported").replace("&", "§")); - return true; - } else { - s.sendMessage(m.getString("spawn.not-set").replace("&", "§")); - return true; - } - } else { - s.sendMessage(m.getString("global.permission").replace("&", "§")); - return true; - } - } else { - s.sendMessage(m.getString("global.not-console")); - return true; - } - } -} diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java index 631fcc9..7c367b9 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Libs/FileManager.java @@ -6,23 +6,22 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class FileManager { - public static List listFiles(String path) { + public static ArrayList listFiles(String path) { String[] t = new File(path).list(); if(t == null) return new ArrayList<>(); - else return Arrays.asList(t); + else return new ArrayList(Arrays.asList(t)); } - public static List listFiles(File path) { + public static ArrayList listFiles(File path) { String[] t = path.list(); if(t == null) return new ArrayList<>(); - else return Arrays.asList(t); + else return new ArrayList(Arrays.asList(t)); } public static void delete(File path) { diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java index 2fbeed8..f856a71 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java @@ -1,20 +1,25 @@ package net.DeltaWings.Minecraft.BetterTP; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Commands.*; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.TabCompleter.*; import org.bukkit.command.PluginCommand; -import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; import org.bstats.bukkit.Metrics; import java.io.IOException; import java.util.logging.Level; +import java.util.concurrent.Callable; + public final class Main extends JavaPlugin { + private PluginDescriptionFile desc; + private static Main instance; public static Main getInstance() { return instance; @@ -36,7 +41,8 @@ public final class Main extends JavaPlugin { public void onEnable() { instance = this; debug("Loading Variables"); - PluginManager pm = getServer().getPluginManager(); + desc = this.getDescription(); + //PluginManager pm = getServer().getPluginManager(); PluginCommand bettertp = getCommand("Bettertp"); PluginCommand home = getCommand("Home"); PluginCommand delhome = getCommand("Delhome"); @@ -53,16 +59,16 @@ public final class Main extends JavaPlugin { } debug("Loaded Configuration !"); - debug("Loading Events"); + //debug("Loading Events"); //pm.registerEvents(new Event(), this); - debug("Loaded Events"); + //debug("Loaded Events"); debug("Loading Commands"); + //getCommand("Command").setExecutor(new Command()); bettertp.setExecutor(new Bettertp()); bettertp.setTabCompleter(new BettertpTab()); - getCommand("Spawn").setExecutor(new Spawn()); - getCommand("Lobby").setExecutor(new Lobby()); + getCommand("Lobby").setExecutor(new LobbySpawn()); home.setExecutor(new Home()); home.setTabCompleter(new HomeTab()); getCommand("Sethome").setExecutor(new Sethome()); @@ -72,9 +78,11 @@ public final class Main extends JavaPlugin { debug("Loaded Commands"); - debug("Enabling Metrics"); - new Charts(new Metrics(this)); - log("Metrics Started : https://bstats.org/plugin/bukkit/plugin/"); + if(new Config("", "config").getBoolean("metrics", true)) { + debug("Enabling Metrics"); + loadCharts(new Metrics(this)); + log("Metrics Started : https://bstats.org/plugin/bukkit/"+desc.getName()+"/"); + } log("Loaded !"); } @@ -114,6 +122,8 @@ public final class Main extends JavaPlugin { c.create(); c.header("How to config : https://bitbucket.org/delta-wings/bettertp/wiki/"); c.set("debug", false); + c.set("metrics", true); + c.set("donttouch.version", 1); c.set("maxhomes.default", 1); c.set("spawn.work", "world"); c.set("spawn.server.lobby", false); @@ -121,4 +131,23 @@ public final class Main extends JavaPlugin { c.save(); } } + + + private void loadCharts(Metrics metrics) { + Main.debug("loading custom charts"); + metrics.addCustomChart(new Metrics.SingleLineChart("home_number", new Callable(){ + + @Override + public Integer call() throws Exception { + Integer result = 0; + for (String conf : API.listPlayersWithHome()) { + Config c = new Config(API.getPlayersFolder(), conf); + result += c.getSection("").size(); + } + return result; + } + })); + Main.debug("loading custom charts"); + + } } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java index 231a880..5b331a1 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/BettertpTab.java @@ -3,37 +3,49 @@ package net.DeltaWings.Minecraft.BetterTP.TabCompleter; import net.DeltaWings.Minecraft.BetterTP.Main; import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class BettertpTab implements TabCompleter { - private final String[] menu = new String[]{"set", "del", "delete", "help", "home", "delhome"}, setdel = new String[]{"spawn","lobby"}, confopt = new String[]{""}; + private final String[] + menu = new String[]{"set", "del", "delete", "help", "home", "delhome"}, + setdel = new String[]{"spawn","lobby"}, + confopt = new String[]{""}; @Override public List onTabComplete(CommandSender s, Command c, String unused, String[] a) { - Main.debug("Tab Completing c : "+ c.getName() +" + \nNa : " + a.length); - for (String b: a) Main.debug(b); - if(a.length > 0 && a[0].equals("")) { - return Arrays.asList(menu); - } - if(a.length == 1) { + Main.debug("Tab Completing c : "+ c.getName() +" + \na length: " + a.length); + Main.debug("a : " + a.toString()); + if(a.length == 1) { // no args if(!a[0].equals("")) { List l = new ArrayList<>(); for (String t: menu) if(t.startsWith(a[0].toLowerCase())) l.add(t); return l; - } - } else if(a.length == 2) { + } else return Arrays.asList(menu); + } else if(a.length == 2) { // first argument done String[] y; - if (a[0].equalsIgnoreCase("set") || a[0].equalsIgnoreCase("del") || a[0].equalsIgnoreCase("delete")) y = setdel; - else if (a[0].equalsIgnoreCase("config")) y = confopt; + if(a[0].equalsIgnoreCase("set") || a[0].equalsIgnoreCase("del") || a[0].equalsIgnoreCase("delete")) y = setdel; + else if(a[0].equalsIgnoreCase("config")) y = confopt; + else if(a[0].equalsIgnoreCase("home") || a[0].equalsIgnoreCase("delhome")) { + ArrayList list = API.listReplace(FileManager.listFiles(Main.getInstance().getDataFolder() + File.separator + "data"), ".yml", ""); + if(a[1].equals("")) return list; + else { + ArrayList l = new ArrayList<>(); + for (String t : list) if (t.startsWith(a[1].toLowerCase())) l.add(t); + return l; + } + } else return null; + //for pre-made sets if (!a[1].equals("")) { List l = new ArrayList<>(); for (String t : y) if (t.startsWith(a[1].toLowerCase())) l.add(t); diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java index 47671a3..2222c8f 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/DelhomeTab.java @@ -1,11 +1,12 @@ package net.DeltaWings.Minecraft.BetterTP.TabCompleter; -import net.DeltaWings.Minecraft.BetterTP.Libs.Config; +import net.DeltaWings.Minecraft.BetterTP.Api.API; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import java.util.ArrayList; import java.util.List; public class DelhomeTab implements TabCompleter { @@ -13,8 +14,16 @@ public class DelhomeTab implements TabCompleter { @Override public List onTabComplete(CommandSender s, Command u1, String unused, String[] a) { if( a.length == 1) { - Config c = new Config("data", s.getName()); - return c.getSection(""); + if(a[0] == "") { + return API.homelist(s.getName()); + } else { + ArrayList t = new ArrayList<>(); + for (String home : API.homelist(s.getName())) { + if(home.startsWith(a[0].toLowerCase())) t.add(home); + } + return t; + } + } else return null; } } diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java index df61376..0fd56cb 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/TabCompleter/HomeTab.java @@ -6,6 +6,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import java.util.ArrayList; import java.util.List; public class HomeTab implements TabCompleter { @@ -13,7 +14,16 @@ public class HomeTab implements TabCompleter { @Override public List onTabComplete(CommandSender s, Command u1, String unused, String[] a) { if( a.length == 1) { - return API.homelist(s.getName()); + if(a[0] == "") { + return API.homelist(s.getName()); + } else { + ArrayList t = new ArrayList<>(); + for (String home : API.homelist(s.getName())) { + if(home.startsWith(a[0].toLowerCase())) t.add(home); + } + return t; + } + } else return null; } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c75ad85..e9908c4 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -6,13 +6,10 @@ authors: [Aviortheking, LePhoenixArdent, Aipsyllone] description: The best teleportation plugin website: https://delta-wings.net commands: - spawn: - description: Teleport to the spawn - usage: Usage /spawn lobby: - description: Teleport to the lobby - usage: Usage /lobby - aliases: [hub] + description: Teleport to the + usage: Usage / + aliases: [hub,spawn] bettertp: description: Manage the plugin usage: Usage /bettertp help -- 2.47.2 From a54e32c295134ebfa5ed9c08c251452e987cc3ee Mon Sep 17 00:00:00 2001 From: Avior Date: Tue, 26 May 2020 00:05:04 +0200 Subject: [PATCH 3/4] Updated Signed-off-by: Avior --- pom.xml | 12 ------- .../Minecraft/BetterTP/Commands/Delhome.java | 4 ++- .../Minecraft/BetterTP/Commands/Home.java | 4 ++- .../Minecraft/BetterTP/Commands/Sethome.java | 8 ++--- .../DeltaWings/Minecraft/BetterTP/Main.java | 31 ++----------------- 5 files changed, 12 insertions(+), 47 deletions(-) diff --git a/pom.xml b/pom.xml index 27a20c8..f028adf 100644 --- a/pom.xml +++ b/pom.xml @@ -83,11 +83,6 @@ spigotmc-repo https://hub.spigotmc.org/nexus/content/groups/public/ - - - bstats-repo - http://repo.bstats.org/content/repositories/releases/ - @@ -104,12 +99,5 @@ 1.13.1-R0.1-SNAPSHOT provided - - - org.bstats - bstats-bukkit - 1.2 - compile - \ No newline at end of file diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Delhome.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Delhome.java index 1431134..ad7fd28 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Delhome.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Delhome.java @@ -15,7 +15,7 @@ public class Delhome implements CommandExecutor { @Override public boolean onCommand(CommandSender s, Command command, String label, String[] a) { - if(s instanceof Player && s.hasPermission("bettertp.delhome")) { + if(s instanceof Player/* && s.hasPermission("bettertp.delhome")*/) { if(a.length > 2) return false; //too many arguments Config c = new Config(API.getPlayersFolder(), s.getName()); String homename = a.length == 0 ? "home" : a[0]; @@ -26,8 +26,10 @@ public class Delhome implements CommandExecutor { c.delete(); } else c.save(); //sendmessage home deleted + s.sendMessage(m.getString("home.deleted").replace("[home]", homename).replace("&", "§")); } else { //sendmessage home don't exist + s.sendMessage(m.getString("home.dont-exist").replace("[home]", homename).replace("&", "§")); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java index 93bb64d..99f2216 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Home.java @@ -17,16 +17,18 @@ public class Home implements CommandExecutor { @Override public boolean onCommand(CommandSender s, Command command, String label, String[] a) { - if(s instanceof Player && s.hasPermission("bettertp.home")) { + if(s instanceof Player/* && s.hasPermission("bettertp.home")*/) { if(a.length > 1) return false; //too many arguments Config c = new Config(API.getPlayersFolder(), s.getName()); String homename = a.length == 0 ? "home" : a[0]; if(c.isSet(homename)) { ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(homename+".world")), c.getDouble(homename+".x"), c.getDouble(homename+".y"), c.getDouble(homename+".z"))); //sendmessage teleported to home home + s.sendMessage(m.getString("home.teleported").replace("[home]", homename).replace("&", "§")); return true; } else { //sendmessage home don't exist + s.sendMessage(m.getString("home.dont-exist").replace("[home]", homename).replace("&", "§")); return true; } } else if(s instanceof ConsoleCommandSender) { diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java index ffde39d..f1af4cc 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Commands/Sethome.java @@ -19,12 +19,12 @@ public class Sethome implements CommandExecutor { @Override public boolean onCommand(CommandSender s, Command command, String label, String[] a) { - if(s instanceof Player && s.hasPermission("bettertp.sethome")) { + if(s instanceof Player/* && s.hasPermission("bettertp.sethome")*/) { if(a.length > 2) return false; //too many arguments Config c = new Config(API.getPlayersFolder(), s.getName()); Integer maxhomes = -1; for(String e : mc.getSection("maxhomes")) { - if(s.hasPermission("bettertp.max."+e)) { + if(true || s.hasPermission("bettertp.max."+e)) { Integer max = mc.getInt("maxhomes."+e, 0); maxhomes = max > maxhomes ? max : maxhomes; //if max > maxhome then maxhome = max } @@ -37,7 +37,7 @@ public class Sethome implements CommandExecutor { if(!c.exist()) c.create(); String homename = a.length == 0 ? "home" : a[0]; if(c.isSet(homename)) { - //sendmessage home already set please delete it before (/delhome) + s.sendMessage(m.getString("home.max").replace("[max]", homename).replace("&", "§")); } else { Location l = ((Player) s).getLocation(); c.set(homename+".world", l.getWorld().getName()); @@ -45,7 +45,7 @@ public class Sethome implements CommandExecutor { c.set(homename+".y", l.getY()); c.set(homename+".z", l.getZ()); c.save(); - //sendmessage home set + s.sendMessage(m.getString("home.set").replace("[home]", homename).replace("&", "§")); } } catch ( IOException e ) { e.printStackTrace(); diff --git a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java index f856a71..b487ed3 100644 --- a/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java +++ b/src/main/java/net/DeltaWings/Minecraft/BetterTP/Main.java @@ -9,8 +9,6 @@ import org.bukkit.command.PluginCommand; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.java.JavaPlugin; -import org.bstats.bukkit.Metrics; - import java.io.IOException; import java.util.logging.Level; import java.util.concurrent.Callable; @@ -53,9 +51,10 @@ public final class Main extends JavaPlugin { config(); } catch ( IOException e ) { e.printStackTrace(); - error("Error Config not generated"); + error("Error: Config not generated"); error("Shutting Down for security..."); this.getPluginLoader().disablePlugin(this); + return } debug("Loaded Configuration !"); @@ -77,13 +76,6 @@ public final class Main extends JavaPlugin { getCommand("Homelist").setExecutor(new Homelist()); debug("Loaded Commands"); - - if(new Config("", "config").getBoolean("metrics", true)) { - debug("Enabling Metrics"); - loadCharts(new Metrics(this)); - log("Metrics Started : https://bstats.org/plugin/bukkit/"+desc.getName()+"/"); - } - log("Loaded !"); } @@ -131,23 +123,4 @@ public final class Main extends JavaPlugin { c.save(); } } - - - private void loadCharts(Metrics metrics) { - Main.debug("loading custom charts"); - metrics.addCustomChart(new Metrics.SingleLineChart("home_number", new Callable(){ - - @Override - public Integer call() throws Exception { - Integer result = 0; - for (String conf : API.listPlayersWithHome()) { - Config c = new Config(API.getPlayersFolder(), conf); - result += c.getSection("").size(); - } - return result; - } - })); - Main.debug("loading custom charts"); - - } } -- 2.47.2 From 0fd9c1ba2ffd23128580f8a2a4e36eb46f5786a5 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 2 Jul 2020 02:00:02 +0000 Subject: [PATCH 4/4] Add renovate.json --- renovate.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 0000000..f45d8f1 --- /dev/null +++ b/renovate.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "config:base" + ] +} -- 2.47.2