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