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] 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