From 964e1bfc208bc00c3bc2e89eac46e3fd224e4871 Mon Sep 17 00:00:00 2001
From: SuperRonanCraft
Date: Mon, 13 Jan 2020 20:24:33 -0500
Subject: [PATCH] open source
---
.DS_Store | Bin 0 -> 6148 bytes
.gitignore | 10 +
README.md | 9 +-
pom.xml | 75 ++++
src/main/java/.DS_Store | Bin 0 -> 6148 bytes
src/main/java/me/.DS_Store | Bin 0 -> 6148 bytes
src/main/java/me/SuperRonanCraft/.DS_Store | Bin 0 -> 6148 bytes
.../me/SuperRonanCraft/BetterRTP/.DS_Store | Bin 0 -> 6148 bytes
.../me/SuperRonanCraft/BetterRTP/Main.java | 147 +++++++
.../BetterRTP/player/Commands.java | 291 ++++++++++++++
.../BetterRTP/player/Delay.java | 80 ++++
.../SuperRonanCraft/BetterRTP/player/RTP.java | 373 ++++++++++++++++++
.../BetterRTP/player/events/Interact.java | 79 ++++
.../BetterRTP/player/events/Join.java | 19 +
.../BetterRTP/player/events/Leave.java | 13 +
.../BetterRTP/player/events/Listener.java | 48 +++
.../BetterRTP/references/Econ.java | 51 +++
.../BetterRTP/references/Permissions.java | 66 ++++
.../BetterRTP/references/Updater.java | 32 ++
.../BetterRTP/references/file/EcoFile.java | 64 +++
.../BetterRTP/references/file/FileBasics.java | 97 +++++
.../BetterRTP/references/file/Files.java | 20 +
.../BetterRTP/references/file/LangFile.java | 67 ++++
.../BetterRTP/references/file/Messages.java | 223 +++++++++++
.../BetterRTP/references/web/Metrics.java | 293 ++++++++++++++
.../BetterRTP/references/worlds/Custom.java | 143 +++++++
.../BetterRTP/references/worlds/Default.java | 76 ++++
.../references/worlds/PlayerWorld.java | 109 +++++
.../BetterRTP/references/worlds/RTPWorld.java | 20 +
src/main/resources/config.yml | 78 ++++
src/main/resources/economy.yml | 15 +
{lang => src/main/resources/lang}/README.md | 2 +-
{lang => src/main/resources/lang}/en.yml | 14 +-
{lang => src/main/resources/lang}/fr.yml | 2 +-
{lang => src/main/resources/lang}/ja.yml | 0
{lang => src/main/resources/lang}/ru.yml | 0
src/main/resources/permissions.yml | 42 ++
src/main/resources/plugin.yml | 51 +++
src/main/resources/signs.yml | 3 +
39 files changed, 2600 insertions(+), 12 deletions(-)
create mode 100644 .DS_Store
create mode 100644 .gitignore
create mode 100644 pom.xml
create mode 100644 src/main/java/.DS_Store
create mode 100644 src/main/java/me/.DS_Store
create mode 100644 src/main/java/me/SuperRonanCraft/.DS_Store
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/.DS_Store
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/Main.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Listener.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/Econ.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/Permissions.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/Updater.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/EcoFile.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/FileBasics.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Files.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/LangFile.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Messages.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/web/Metrics.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Custom.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Default.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/PlayerWorld.java
create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/RTPWorld.java
create mode 100644 src/main/resources/config.yml
create mode 100644 src/main/resources/economy.yml
rename {lang => src/main/resources/lang}/README.md (99%)
rename {lang => src/main/resources/lang}/en.yml (78%)
rename {lang => src/main/resources/lang}/fr.yml (98%)
rename {lang => src/main/resources/lang}/ja.yml (100%)
rename {lang => src/main/resources/lang}/ru.yml (100%)
create mode 100644 src/main/resources/permissions.yml
create mode 100644 src/main/resources/plugin.yml
create mode 100644 src/main/resources/signs.yml
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..af54a92fb59922a97366095d8ba072acaaa3e7b5
GIT binary patch
literal 6148
zcmeHKy-veG47S@0p)3^>W1axijWMdi#Mps_0h*wIl#+_116wAZgE#3*P~L#&0RLRu
zTvH?_gut%OUt;^tcb^oy2LL!;WFvqf0E9Fcg8`{M!hRkd={d_0A<7yx+`|LpP!)M6
z+6=~kG4R_M;BWT;PN0HYsOh))en*qEoXvH+y^H-(vocAtMV$h?F5h1ycF$U~GW$l<
z{H~pm>k;%}%KOQxw3wD<(J~czD;Tf%5H5JTrMI(?3S8T>-o~!SORYsMfC6r~lzEw8
zz?n9_ZLZbF>9gc&`PSLGJ};k?UfO*HkC6ID6_d9C94zHP;%TK1pDrc6TV~7nYRBWH
z#zrQY`lk#~&t?e^6-^rh#(*)fVSwvHM1wJQ*eFWrASKQKwn>n-2czN
zzW@7^?9CW32L2QS7$lQqOhwD9RL4t{uw*x8h?OBIJwsfiQO1
SD3XQ5{s;&Sri_6fW#AKlih9KW
literal 0
HcmV?d00001
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3f46f5e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+/bin/
+/.git/
+/.settings/
+/.classpath
+/.project
+target
+.idea
+*.iml
+/BetterRTP.wiki
+/BetterRTP
\ No newline at end of file
diff --git a/README.md b/README.md
index 0413fcf..0c9492b 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,12 @@
Welcome to BetterRTP's repository!
-## Wheres the Wiki?
-The wiki is available [here](../../wiki)!
+## Where's the Lang files?/Want to Contribute translating?
+All language files are located [here](src/main/resources/lang)
+feel free to fork one of the language files and help translate!
-## Want to Contribute translating?
-Fork one of the [language files](lang) and help translate!
+## Where's the Wiki?
+The wiki is available [here](../../wiki)!
Chat with us on Discord
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..cf561a8
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,75 @@
+
+
+ 4.0.0
+
+ me.SuperRonanCraft
+ BetterRTP
+ 1.0-SNAPSHOT
+
+
+ 1.8
+ 1.8
+
+
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ vault-repo
+ http://nexus.hc.to/content/repositories/pub_releases
+
+
+ sk89q-repo
+ http://maven.sk89q.com/repo/
+
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.14-R0.1-SNAPSHOT
+ provided
+
+
+
+ org.bukkit
+ bukkit
+ 1.14-R0.1-SNAPSHOT
+ provided
+
+
+ org.spigotmc
+ spigot
+ 1.14-R0.1-SNAPSHOT
+ provided
+
+
+ net.milkbowl.vault
+ VaultAPI
+ 1.7
+ provided
+
+
+ com.sk89q
+ worldguard
+ 6.1
+ provided
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..133a14cf633d26a8a9b97f2a578f828b5018c384
GIT binary patch
literal 6148
zcmeHKJ8A<#43%sL3~5}t9LNcLgTZW0;3nY4WY;9cE@N=qZ4TsTI4AfSPjkMzBATG%o=h?A0)O7eY9T-0X
M!b?an@EZ)A0UQ`6CjbBd
literal 0
HcmV?d00001
diff --git a/src/main/java/me/.DS_Store b/src/main/java/me/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..cfb2ebac72a8633754645d332a1cf29f3f06af1a
GIT binary patch
literal 6148
zcmeHKOHRZv47Fj9MqtAb_UIeN);O<
zz?PhsICh)7s&Pz2yz1*E(SnHPP(hZ?h=_S~>L5EG0a>5%OqZ1CiPq5HA+q)pDygTA
z?r3-Y=NPT&o;LMM)!e4kV2e|(&BL;+Qrp?y-(II9+Ef&Ezp04cug2n&QQ6lkHGOANMf*hBV<83#iPC(gwO=QnSQm+keIgSrz(LvNh{XJDU!
zLmMt6|6kyj94+$qLww{6I0Ju-0iG3QvBIWuZvC=7$+ZD`0~Ha!K{^ohH5CIj6=NXh
g$f-`+e2_loW5&Tyo+5S)2l_=o3Gv1m_yGn!0Or^~YXATM
literal 0
HcmV?d00001
diff --git a/src/main/java/me/SuperRonanCraft/.DS_Store b/src/main/java/me/SuperRonanCraft/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..f8ae46374e908df5f013af3c4d09c7898dce440b
GIT binary patch
literal 6148
zcmeHK!Ab-%3{7-}6)$`ASnvz>56Up!#q}nFIJ4+shAz5$FMf{y5-o^mjwZ-rR78fWt^*4`0&ZiG;VZ9FVFR;F|}>K+jc~+*Jn2+wzAZi`fo&S9`;v!
z(}i6-1I~am;0!neKVU#EH^}@%(X}(+3^)Uy49NKq&;+AlRxC#cR4D;~GYl7jEwzN?
z1jA^U72$!frUEsUt;AqW$9S-~XqXi>o!E*Gwv|7M7cQ$~{!qe+qoQkPz!{h_aH!pd
z-2dnJWU58}G{t+)fHUyV7~omEY8!0I?$$5cle;#c-J*#|TowZYd-4;2j+`T>#i{-v
aHsYdTR+L#}yrcvDN1zbm${F|t2HpX#Z!;eN
literal 0
HcmV?d00001
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/.DS_Store b/src/main/java/me/SuperRonanCraft/BetterRTP/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..13ce59656bb7174305f726891504c2e85bc0392f
GIT binary patch
literal 6148
zcmeHKJ5Iwu5SbX>y8X;W(*9n$EI4B^;6r{cy##-4Dh?V
zq-XkoE-86`z3KXOIxE{|r8mkKX;9M^MYY|OMBk6am-zHzo3=W#x_ayHJm=ssy(5_y
zDC3e!*meJhwbvm{@#gc;MoF>{eBS;8leCZcr5Cu94c#~c&VVy;<_uVo9$lY#o}QjF
z;0&Ce0scNjC}U>WDaxk|CtUyU5BL9RkUu#C&cMH7APkFHk>g5M
xTX!zUwKhWMP!{&<6n{f7kWvg^F2%P{5zI#(05ii*5i=0~BOo-maRyGxzz;e(R<-~D
literal 0
HcmV?d00001
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java
new file mode 100644
index 0000000..90c1bac
--- /dev/null
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java
@@ -0,0 +1,147 @@
+package me.SuperRonanCraft.BetterRTP;
+
+import me.SuperRonanCraft.BetterRTP.player.Commands;
+import me.SuperRonanCraft.BetterRTP.player.RTP;
+import me.SuperRonanCraft.BetterRTP.player.events.Listener;
+import me.SuperRonanCraft.BetterRTP.references.Econ;
+import me.SuperRonanCraft.BetterRTP.references.Permissions;
+import me.SuperRonanCraft.BetterRTP.references.Updater;
+import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
+import me.SuperRonanCraft.BetterRTP.references.file.Files;
+import me.SuperRonanCraft.BetterRTP.references.file.Messages;
+import me.SuperRonanCraft.BetterRTP.references.web.Metrics;
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import java.io.File;
+import java.util.List;
+
+public class Main extends JavaPlugin {
+ private Permissions perms = new Permissions();
+ private Messages text = new Messages(this);
+ private Econ eco = new Econ();
+ private Commands cmd = new Commands(this);
+ private RTP rtp = new RTP(this);
+ private Listener listener = new Listener();
+ private boolean worldguard = false, griefprevention = false, savagefactions = false;
+ private static Main instance;
+ private Files files = new Files();
+
+ public void onEnable() {
+ instance = this;
+ new Updater(this);
+ new Metrics(this);
+ loadAll();
+ listener.registerEvents(this);
+ }
+
+ public Files getFiles() {
+ return files;
+ }
+
+ public static Main getInstance() {
+ return instance;
+ }
+
+ @Override
+ public boolean onCommand(CommandSender sendi, Command cmd, String label, String[] args) {
+ try {
+ this.cmd.commandExecuted(sendi, label, args);
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ text.error(sendi);
+ }
+ return true;
+ }
+
+ @Override
+ public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
+ return this.cmd.onTabComplete(sender, args);
+ }
+
+ public Permissions getPerms() {
+ return perms;
+ }
+
+ public Messages getText() {
+ return text;
+ }
+
+ public Econ getEco() {
+ return eco;
+ }
+
+ public Commands getCmd() {
+ return cmd;
+ }
+
+ public RTP getRTP() {
+ return rtp;
+ }
+
+ public boolean isWorldguard() {
+ return worldguard;
+ }
+
+ public boolean isGriefprevention() {
+ return griefprevention;
+ }
+
+ public void reload(CommandSender sendi) {
+ loadAll();
+ text.getReload(sendi);
+ }
+
+ //Load
+ private void loadAll() {
+ //recreatePermissions();
+ //registerConfig(reload);
+ files.loadAll();
+ rtp.load();
+ cmd.load();
+ listener.load();
+ loadSettings();
+ }
+
+ //private void registerConfig(boolean reload) {
+ //if (reload)
+ // reloadConfig();
+ //getConfig().options().copyDefaults(true);
+ //saveConfig();
+ //}
+
+ private void loadSettings() {
+ FileBasics.FILETYPE config = getFiles().getType(FileBasics.FILETYPE.CONFIG);
+ if (config.getBoolean("Settings.RespectWorldGuard"))
+ registerWorldguard();
+ else if (worldguard)
+ worldguard = false;
+ if (config.getBoolean("Settings.RespectGriefPrevention"))
+ registerGriefPrevention();
+ else if (griefprevention)
+ griefprevention = false;
+ if (config.getBoolean("Settings.RespectSavageFactions"))
+ registerSavageFactions();
+ else if (savagefactions)
+ savagefactions = false;
+ }
+
+ private void recreatePermissions() {
+ //Permissions File
+ saveResource(new File(getDataFolder(), "permissions.yml").getName(), true);
+ }
+
+ private void registerWorldguard() {
+ worldguard = Bukkit.getPluginManager().isPluginEnabled("WorldGuard");
+ }
+
+ private void registerGriefPrevention() {
+ griefprevention = Bukkit.getPluginManager().isPluginEnabled("GriefPrevention");
+ }
+
+ private void registerSavageFactions() {
+ savagefactions = Bukkit.getPluginManager().isPluginEnabled("Factions");
+ }
+}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java
new file mode 100644
index 0000000..1a7a208
--- /dev/null
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java
@@ -0,0 +1,291 @@
+package me.SuperRonanCraft.BetterRTP.player;
+
+import me.SuperRonanCraft.BetterRTP.Main;
+import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.block.Biome;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.UUID;
+
+public class Commands {
+
+ private Main pl;
+ HashMap cooldowns = new HashMap<>();
+ public HashMap rtping = new HashMap<>();
+ private boolean cooldownTimer;
+ private int timer, cooldown;
+ public static String[] cmds = {"help", "player", "world", "version", "reload", "biome"};
+
+ public Commands(Main pl) {
+ this.pl = pl;
+ }
+
+ public void load() {
+ FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG);
+ timer = config.getInt("Settings.Delay.Time");
+ cooldownTimer = config.getBoolean("Settings.Cooldown.Enabled");
+ cooldown = config.getInt("Settings.Cooldown.Time");
+ cooldowns.clear();
+ }
+
+ public void commandExecuted(CommandSender sendi, String cmd, String[] args) {
+ if (pl.getPerms().getUse(sendi))
+ if (args == null)
+ rtp(sendi, cmd, null, null);
+ else if (args.length == 1) {
+ if (args[0].equalsIgnoreCase(cmds[0]))
+ help(sendi, cmd);
+ else if (args[0].equalsIgnoreCase(cmds[1]))
+ player(sendi, cmd, args);
+ else if (args[0].equalsIgnoreCase(cmds[2]))
+ world(sendi, cmd, args);
+ else if (args[0].equalsIgnoreCase(cmds[3]))
+ version(sendi);
+ else if (args[0].equalsIgnoreCase(cmds[4]))
+ reload(sendi);
+ else if (args[0].equalsIgnoreCase(cmds[5]))
+ biome(sendi, cmd, args);
+ else
+ invalid(sendi, cmd);
+ } else if (args.length >= 2 && args.length <= 3) {
+ if (args[0].equalsIgnoreCase(cmds[1]))
+ player(sendi, cmd, args);
+ else if (args[0].equalsIgnoreCase(cmds[2]))
+ world(sendi, cmd, args);
+ else if (args[0].equalsIgnoreCase(cmds[5]))
+ biome(sendi, cmd, args);
+ else
+ invalid(sendi, cmd);
+ } else if (args.length > 3) {
+ if (args[0].equalsIgnoreCase(cmds[5]))
+ biome(sendi, cmd, args);
+ else if (args[0].equalsIgnoreCase(cmds[1]))
+ player(sendi, cmd, args);
+ else
+ invalid(sendi, cmd);
+ } else
+ rtp(sendi, cmd, null, null);
+ else
+ noPerm(sendi);
+ }
+
+ public List onTabComplete(CommandSender sendi, String[] args) {
+ List list = new ArrayList<>();
+ if (args.length == 1) {
+ for (String s : cmds)
+ if (s.startsWith(args[0]) && permOf(sendi, s))
+ list.add(s);
+ } else if (args.length == 2) {
+ if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1])) {
+ for (Player p : Bukkit.getOnlinePlayers())
+ if (p.getDisplayName().startsWith(args[1]))
+ list.add(p.getDisplayName());
+ } else if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2]))
+ for (World w : Bukkit.getWorlds())
+ if (w.getName().startsWith(args[1]) && !pl.getRTP().disabledWorlds().contains(w.getName()) && pl
+ .getPerms().getAWorld(sendi, w.getName()))
+ list.add(w.getName());
+ } else if (args.length == 3) {
+ if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1])) {
+ for (World w : Bukkit.getWorlds())
+ if (w.getName().startsWith(args[2]))
+ list.add(w.getName());
+ } else if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2]) && permOf(sendi, cmds[5]))
+ addBiomes(list, args);
+ } else if (args.length > 3) {
+ if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2]) && permOf(sendi, cmds[5])) {
+ addBiomes(list, args);
+ } else if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1]) && permOf(sendi, cmds[5]))
+ addBiomes(list, args);
+ }
+ if (args[0].equalsIgnoreCase(cmds[5]) && permOf(sendi, cmds[5]))
+ addBiomes(list, args);
+ return list;
+ }
+
+ private void addBiomes(List list, String[] args) {
+ try {
+ for (Biome b : Biome.values())
+ if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase()))
+ list.add(b.name().replaceAll("minecraft:", ""));
+ } catch (NoSuchMethodError e) {
+ //Not in 1.14.X
+ }
+ }
+
+ //COMMANDS
+ private void rtp(CommandSender sendi, String cmd, String world, List biomes) {
+ if (sendi instanceof Player)
+ tp((Player) sendi, sendi, world, biomes);
+ else
+ sendi.sendMessage(pl.getText().colorPre("Must be a player to use this command! Try '/" + cmd + " help'"));
+ }
+
+ private void help(CommandSender sendi, String cmd) {
+ pl.getText().getHelpList(sendi, cmd);
+ if (pl.getPerms().getRtpOther(sendi))
+ pl.getText().getHelpPlayer(sendi, cmd);
+ if (sendi instanceof Player) {
+ if (pl.getPerms().getAWorld(sendi, null))
+ pl.getText().getHelpWorld(sendi, cmd);
+ } else
+ pl.getText().getHelpWorld(sendi, cmd);
+ if (pl.getPerms().getReload(sendi))
+ pl.getText().getHelpReload(sendi, cmd);
+ }
+
+ @SuppressWarnings("all")
+ private void player(CommandSender sendi, String cmd, String[] args) {
+ if (permOf(sendi, args[0]))
+ if (args.length == 2)
+ if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline())
+ tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null);
+ else if (Bukkit.getPlayer(args[1]) != null)
+ playerNotOnline(sendi, args[1]);
+ else
+ usage(sendi, cmd, args[0]);
+ else if (args.length >= 3)
+ if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline())
+ tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getWorld(args[2]).getName(), getBiomes(args, 3, sendi));
+ else if (Bukkit.getPlayer(args[1]) != null)
+ playerNotOnline(sendi, args[1]);
+ else
+ usage(sendi, cmd, args[0]);
+ else
+ usage(sendi, cmd, args[0]);
+ else
+ noPerm(sendi);
+ }
+
+ //rtp world
+ private void world(CommandSender sendi, String cmd, String[] args) {
+ if (permOf(sendi, args[0]))
+ if (args.length >= 2)
+ rtp(sendi, cmd, args[1], getBiomes(args, 2, sendi));
+ else
+ usage(sendi, cmd, args[0]);
+ else
+ noPerm(sendi);
+ }
+
+ //rtp biome
+ private void biome(CommandSender sendi, String cmd, String[] args) {
+ if (permOf(sendi, args[0]))
+ if (args.length >= 2)
+ rtp(sendi, cmd, null, getBiomes(args, 1, sendi));
+ else
+ usage(sendi, cmd, args[0]);
+ else
+ noPerm(sendi);
+ }
+
+ private List getBiomes(String[] args, int start, CommandSender sendi) {
+ List biomes = new ArrayList<>();
+ boolean error_sent = false;
+ if (permOf(sendi, cmds[5]))
+ for (int i = start; i < args.length; i++) {
+ String str = args[i];
+ try {
+ biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name());
+ } catch (Exception e) {
+ if (!error_sent) {
+ pl.getText().getOtherBiome(sendi, str);
+ error_sent = true;
+ }
+ }
+ }
+ return biomes;
+ }
+
+ private void reload(CommandSender sendi) {
+ if (pl.getPerms().getReload(sendi))
+ pl.reload(sendi);
+ else
+ noPerm(sendi);
+ }
+
+ private void version(CommandSender sendi) {
+ sendi.sendMessage(pl.getText().colorPre("&aVersion #&e" + pl.getDescription().getVersion()));
+ }
+
+ private void invalid(CommandSender sendi, String cmd) {
+ pl.getText().getInvalid(sendi, cmd);
+ }
+
+ //INFORMATION
+ private void usage(CommandSender sendi, String cmd, String arg) {
+ if (arg.equalsIgnoreCase(cmds[1]))
+ pl.getText().getUsageRTPOther(sendi, cmd);
+ else if (arg.equalsIgnoreCase(cmds[2]))
+ pl.getText().getUsageWorld(sendi, cmd);
+ else if (arg.equalsIgnoreCase(cmds[5]))
+ pl.getText().getUsageBiome(sendi, cmd);
+ else
+ pl.getText().sms(sendi, "&cSomething went wrong!");
+ }
+
+ private void playerNotOnline(CommandSender sendi, String player) {
+ pl.getText().getNotOnline(sendi, player);
+ }
+
+ private void noPerm(CommandSender sendi) {
+ pl.getText().getNoPermission(sendi);
+ }
+
+ private void tp(Player player, CommandSender sendi, String world, List biomes) {
+ if (cooldown(sendi, player)) {
+ boolean delay = false;
+ if (!pl.getPerms().getBypassDelay(player))
+ if (timer != 0)
+ if (sendi == player)
+ delay = true;
+ pl.getRTP().start(player, sendi, world, biomes, delay);
+ }
+ }
+
+ private boolean cooldown(CommandSender sendi, Player player) {
+ if (sendi != player || pl.getPerms().getBypassCooldown(player))
+ return true;
+ else if (rtping.containsKey(player.getUniqueId()))
+ if (rtping.get(player.getUniqueId())) {
+ pl.getText().getAlready(player);
+ return false;
+ }
+ if (cooldownTimer) {
+ Player p = (Player) sendi;
+ if (cooldowns.containsKey(p.getUniqueId())) {
+ long Left = ((cooldowns.get(p.getUniqueId()) / 1000) + cooldown) - (System.currentTimeMillis() / 1000);
+ if (!pl.getPerms().getBypassDelay(p))
+ Left = Left + timer;
+ if (Left > 0) {
+ // Still cooling down
+ pl.getText().getCooldown(sendi, String.valueOf(Left));
+ return false;
+ } else {
+ cooldowns.remove(p.getUniqueId());
+ return true;
+ }
+ } else
+ cooldowns.put(p.getUniqueId(), System.currentTimeMillis());
+ }
+ return true;
+ }
+
+ private boolean permOf(CommandSender sendi, String cmd) {
+ if (cmd.equalsIgnoreCase(cmds[4]))
+ return pl.getPerms().getReload(sendi);
+ else if (cmd.equalsIgnoreCase(cmds[1]))
+ return pl.getPerms().getRtpOther(sendi);
+ else if (cmd.equalsIgnoreCase(cmds[2]))
+ return pl.getPerms().getWorld(sendi);
+ else if (cmd.equalsIgnoreCase(cmds[5]))
+ return pl.getPerms().getBiome(sendi);
+ return true;
+ }
+}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java
new file mode 100644
index 0000000..dd64c4c
--- /dev/null
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Delay.java
@@ -0,0 +1,80 @@
+package me.SuperRonanCraft.BetterRTP.player;
+
+import me.SuperRonanCraft.BetterRTP.references.worlds.PlayerWorld;
+import me.SuperRonanCraft.BetterRTP.Main;
+import org.bukkit.Bukkit;
+import org.bukkit.Sound;
+import org.bukkit.command.CommandSender;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerMoveEvent;
+
+class Delay implements Listener {
+ private int run;
+ private PlayerWorld pWorld;
+ private Main pl = Main.getInstance();
+
+ Delay(CommandSender sendi, PlayerWorld pWorld, int delay, boolean cancelOnMove) {
+ this.pWorld = pWorld;
+ delay(sendi, delay, cancelOnMove);
+ }
+
+ @SuppressWarnings("deprecation")
+ private void delay(CommandSender sendi, int delay, boolean cancelOnMove) {
+ Main pl = Main.getInstance();
+ if (sendi.equals(pWorld.getPlayer()) && delay != 0 && pl.getText().getTitleDelayChat())
+ pl.getText().getDelay(sendi, String.valueOf(delay));
+ if (pl.getText().getSoundsEnabled()) {
+ Sound sound = pl.getText().getSoundsDelay();
+ if (sound != null)
+ pWorld.getPlayer().playSound(pWorld.getPlayer().getLocation(), sound, 1F, 1F);
+ }
+ if (pl.getText().getTitleEnabled()) {
+ String title = pl.getText().getTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay));
+ String subTitle = pl.getText().getSubTitleDelay(pWorld.getPlayer().getName(), String.valueOf(delay));
+ pWorld.getPlayer().sendTitle(title, subTitle);
+ // int fadeIn = text.getFadeIn();
+ // int stay = text.getStay();
+ // int fadeOut = text.getFadeOut();
+ // player.sendTitle(title, subTitle, fadeIn, stay, fadeOut);
+ // pWorld.getPlayer().sendTitle(title, subTitle);
+ }
+ run = Bukkit.getScheduler().scheduleSyncDelayedTask(pl, run(sendi, this), delay * 2 * 10);
+ //Bukkit.getScheduler().scheduleSyncRepeatingTask(pl, run(sendi, this), 0, 10);
+ if (cancelOnMove)
+ Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
+ }
+
+ @EventHandler
+ @SuppressWarnings("unused")
+ private void event(PlayerMoveEvent e) {
+ if (e.getPlayer().equals(pWorld.getPlayer())) {
+ Bukkit.getScheduler().cancelTask(run);
+ if (!Bukkit.getScheduler().isCurrentlyRunning(run)) {
+ HandlerList.unregisterAll(this);
+ pl.getText().getMoved(pWorld.getPlayer());
+ pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice());
+ pl.getCmd().cooldowns.remove(pWorld.getPlayer().getUniqueId());
+ pl.getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false);
+ }
+ }
+ }
+
+ private Runnable run(final CommandSender sendi, final Delay cls) {
+ return () -> {
+ HandlerList.unregisterAll(cls);
+ if (pl.getCmd().rtping.containsKey(pWorld.getPlayer().getUniqueId())) {
+ try {
+ pl.getRTP().tp(sendi, pWorld);
+ } catch (NullPointerException e) {
+ if (pWorld.getPrice() > 0)
+ pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice());
+ }
+ pl.getCmd().rtping.put(pWorld.getPlayer().getUniqueId(), false);
+ } else if (pWorld.getPrice() > 0)
+ pl.getEco().unCharge(pWorld.getPlayer(), pWorld.getPrice());
+ Bukkit.getScheduler().cancelTask(run);
+ };
+ }
+}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java
new file mode 100644
index 0000000..876149b
--- /dev/null
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java
@@ -0,0 +1,373 @@
+package me.SuperRonanCraft.BetterRTP.player;
+
+import com.sk89q.worldguard.bukkit.RegionContainer;
+import com.sk89q.worldguard.bukkit.WGBukkit;
+import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
+import com.sk89q.worldguard.protection.managers.RegionManager;
+import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
+import me.SuperRonanCraft.BetterRTP.references.worlds.Custom;
+import me.SuperRonanCraft.BetterRTP.references.worlds.Default;
+import me.SuperRonanCraft.BetterRTP.references.worlds.PlayerWorld;
+import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
+import me.SuperRonanCraft.BetterRTP.Main;
+import me.ryanhamshire.GriefPrevention.GriefPrevention;
+import org.bukkit.*;
+import org.bukkit.block.Biome;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class RTP {
+
+ private Main pl;
+ //Cache
+ private HashMap customWorlds = new HashMap<>();
+ private HashMap overriden = new HashMap<>();
+ public me.SuperRonanCraft.BetterRTP.references.worlds.Default Default = new Default();
+ private Random rn = new Random();
+ private List disabledWorlds, blockList;
+ private int maxAttempts, delayTime;
+ private boolean cancelOnMove;
+
+ public RTP(Main pl) {
+ this.pl = pl;
+ }
+
+ public void load() {
+ Default.setup();
+ FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG);
+ disabledWorlds = config.getStringList("DisabledWorlds");
+ maxAttempts = config.getInt("Settings.MaxAttempts");
+ delayTime = config.getInt("Settings.Delay.Time");
+ cancelOnMove = config.getBoolean("Settings.Delay.CancelOnMove");
+ blockList = config.getStringList("BlacklistedBlocks");
+ try {
+ for (String s : config.getConfigurationSection("Override").getKeys(false))
+ overriden.put(s, config.getString("Override." + s));
+ } catch (Exception e) {
+ //No Overrides
+ }
+ customWorlds.clear();
+
+ List
+
\ No newline at end of file
diff --git a/lang/en.yml b/src/main/resources/lang/en.yml
similarity index 78%
rename from lang/en.yml
rename to src/main/resources/lang/en.yml
index 7fa3432..7d4a3f0 100644
--- a/lang/en.yml
+++ b/src/main/resources/lang/en.yml
@@ -1,7 +1,6 @@
Messages:
Prefix: '&7[&6BetterRTP&7] '
- ## Placeholders! %x% %y% and %z% are the x, y, and z coordinates that the player is being teleported to! #
- Success:
+ Success: ## Placeholders! %x% %y% and %z% are the x, y, and z coordinates that the player is being teleported to! #
Paid: '&aYou have been tp''d to&7 x=%x% y=%y% z=%z% for &c$%price%&7 in &f%attempts% &7attempts!'
Bypass: '&aYou have been tp''d to&7 x=%x% y=%y% z=%z% in &f%attempts% &7attempts'
Failed:
@@ -10,6 +9,7 @@ Messages:
Other:
Success: '&a%player% has been tp''d to&7 x=%x% y=%y% z=%z% in &f%attempts% &7attempts!'
NotSafe: '&cCould not find safe spot within %attempts% attempts! &7%player% was not rtp''d!'
+ Biome: '&cSeems like the biome&7 %biome%&c does not exist! &7Try using the tab list!'
Reload: '&eConfig reloaded successfully!'
NoPermission:
Basic: '&cSorry! &7You don''t have permission to use this command!'
@@ -46,14 +46,16 @@ Help:
- ' &7- &e/%command% &7- Randomly teleports you!'
- ' &7- &e/%command% help &7- Shows help list'
##If the player has permission to rtp another player, this message will be added under the list!
- Player: ' &7- &e/%command% player [world] &7- Randomly teleport another player'
- World: ' &7- &e/%command% world &7- Randomly teleport in another world'
+ Player: ' &7- &e/%command% player [world] [biome1, biome2...] &7- Randomly teleport another player'
+ World: ' &7- &e/%command% world [biome1, biome2...] &7- Randomly teleport in another world'
##If the player has permission to reload the plugin this message will be added under the list!
+ Biome: ' &7- &e/%command% biome &7- Randomly teleport withing these biomes'
Reload: ' &7- &e/%command% reload &7- Reloads the plugin'
Usage:
- Player: '&cUsage&7: /%command% player [world]'
- World: '&cUsage&7: /%command% world '
+ Player: '&cUsage&7: /%command% player [world] [biome1, biome2]'
+ World: '&cUsage&7: /%command% world [biome1, biome2...]'
+ Biome: '&cUsage&7: /%command% biome '
Sounds:
Enabled: true
diff --git a/lang/fr.yml b/src/main/resources/lang/fr.yml
similarity index 98%
rename from lang/fr.yml
rename to src/main/resources/lang/fr.yml
index 284b333..c2f46ed 100644
--- a/lang/fr.yml
+++ b/src/main/resources/lang/fr.yml
@@ -61,4 +61,4 @@ Sounds:
## Son à jouer lors de la téléportation avec délai ##
Delay: 'entity_tnt_primed'
##Son à jouer lorsque la téléportation à réussie ##
- Success: 'entity_generic_explode'
\ No newline at end of file
+ Success: 'entity_generic_explode'
diff --git a/lang/ja.yml b/src/main/resources/lang/ja.yml
similarity index 100%
rename from lang/ja.yml
rename to src/main/resources/lang/ja.yml
diff --git a/lang/ru.yml b/src/main/resources/lang/ru.yml
similarity index 100%
rename from lang/ru.yml
rename to src/main/resources/lang/ru.yml
diff --git a/src/main/resources/permissions.yml b/src/main/resources/permissions.yml
new file mode 100644
index 0000000..61524d1
--- /dev/null
+++ b/src/main/resources/permissions.yml
@@ -0,0 +1,42 @@
+permissions:
+ betterrtp.*:
+ children:
+ betterrtp.use: true
+ betterrtp.world: true
+ betterrtp.world.*: true
+ betterrtp.bypass.*: true
+ betterrtp.player: true
+ betterrtp.reload: true
+ betterrtp.updater: true
+ betterrtp.world:
+ description: RTP into other worlds
+ betterrtp.world.*:
+ description: RTP in all enabled worlds
+ betterrtp.world.:
+ description: RTP in
+ betterrtp.bypass.*:
+ children:
+ betterrtp.bypass.cooldown: true
+ betterrtp.bypass.delay: true
+ betterrtp.bypass.economy: true
+ betterrtp.use:
+ description: Use RTP command
+ default: true
+ betterrtp.player:
+ description: RTP another player
+ betterrtp.biome:
+ description: RTP to specific biomes
+ betterrtp.sign:
+ description: Ability to create an RTP sign
+ betterrtp.bypass.cooldown:
+ description: Bypass cooldowns
+ betterrtp.bypass.delay:
+ description: Bypass delays
+ betterrtp.bypass.economy:
+ description: Bypass economy
+ betterrtp.reload:
+ description: Reload the config
+ default: op
+ betterrtp.updater:
+ description: Get notification on new updates
+ default: op
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..d12c3b7
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,51 @@
+main: me.SuperRonanCraft.BetterRTP.Main
+version: 2.9.3
+name: BetterRTP
+author: SuperRonanCraft
+softdepend: [Vault, WorldGuard, GriefPrevention, Factions]
+
+commands:
+ betterrtp:
+ aliases: [brtp, rtp]
+ description: Randomly teleport to a location
+
+permissions:
+ betterrtp.*:
+ children:
+ betterrtp.use: true
+ betterrtp.world.*: true
+ betterrtp.bypass.*: true
+ betterrtp.player: true
+ betterrtp.reload: true
+ betterrtp.updater: true
+ betterrtp.biome: true
+ betterrtp.world.*:
+ description: RTP in all enabled worlds
+ betterrtp.bypass.*:
+ children:
+ betterrtp.bypass.cooldown: true
+ betterrtp.bypass.delay: true
+ betterrtp.bypass.economy: true
+ betterrtp.use:
+ description: Use RTP command
+ default: true
+ betterrtp.world:
+ description: Use world command
+ betterrtp.player:
+ description: RTP another player
+ betterrtp.biome:
+ description: RTP to specific biomes
+ betterrtp.sign:
+ description: Ability to create an RTP sign
+ betterrtp.bypass.cooldown:
+ description: Bypass cooldowns
+ betterrtp.bypass.delay:
+ description: Bypass delays
+ betterrtp.bypass.economy:
+ description: Bypass economy
+ betterrtp.reload:
+ description: Reload the config
+ default: op
+ betterrtp.updater:
+ description: Get notification on new updates
+ default: op
\ No newline at end of file
diff --git a/src/main/resources/signs.yml b/src/main/resources/signs.yml
new file mode 100644
index 0000000..f47ae5a
--- /dev/null
+++ b/src/main/resources/signs.yml
@@ -0,0 +1,3 @@
+Settings:
+ Enabled: false
+ Title: "[RTP]"
\ No newline at end of file