This commit is contained in:
Florian Bouillon 2018-09-11 23:40:00 +02:00
parent eeedbbc753
commit f5c0b654f4
14 changed files with 272 additions and 323 deletions

View File

@ -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<String> 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<String> listPlayersWithHome() {
return listReplace(FileManager.listFiles(Main.getInstance().getDataFolder() + File.separator + getPlayersFolder()), ".yml", "");
}
//functions without plugin link
public static ArrayList<String> listReplace(ArrayList<String> list, String replaced, String replacement) {
ListIterator<String> it = list.listIterator();
while(it.hasNext()) {
it.set(it.next().replace(replaced, replacement));
}
return list;
}
}

View File

@ -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<Integer>(){
@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;
}
}));
}
}

View File

@ -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 <lobby|spawn>
del <lobby|spawn>
help
homelist <player>
home <player> [homename]
selhome <player [homename]
*/

View File

@ -1,14 +1,14 @@
package net.DeltaWings.Minecraft.BetterTP.Commands;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
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;
public class Delhome implements CommandExecutor {
private final Config m = new Config("", "messages");
@ -16,45 +16,30 @@ 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")) {
Config c = new Config("data", s.getName());
if(a.length == 1) {
if(c.isSet(a[0])) {
c.set(a[0], null);
try {
c.save();
} catch ( IOException e ) {
e.printStackTrace();
s.sendMessage("Error, Please call an Admin !");
}
s.sendMessage(m.getString("home.deleted").replace("[home]", a[0]).replace("&", "§"));
return true;
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];
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;
}
}

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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<String> 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;
}
}

View File

@ -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;
}
}
}

View File

@ -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<String> listFiles(String path) {
public static ArrayList<String> listFiles(String path) {
String[] t = new File(path).list();
if(t == null) return new ArrayList<>();
else return Arrays.asList(t);
else return new ArrayList<String>(Arrays.asList(t));
}
public static List<String> listFiles(File path) {
public static ArrayList<String> listFiles(File path) {
String[] t = path.list();
if(t == null) return new ArrayList<>();
else return Arrays.asList(t);
else return new ArrayList<String>(Arrays.asList(t));
}
public static void delete(File path) {

View File

@ -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<Integer>(){
@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");
}
}

View File

@ -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<String> 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<String> 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<String> list = API.listReplace(FileManager.listFiles(Main.getInstance().getDataFolder() + File.separator + "data"), ".yml", "");
if(a[1].equals("")) return list;
else {
ArrayList<String> 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<String> l = new ArrayList<>();
for (String t : y) if (t.startsWith(a[1].toLowerCase())) l.add(t);

View File

@ -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<String> 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<String> t = new ArrayList<>();
for (String home : API.homelist(s.getName())) {
if(home.startsWith(a[0].toLowerCase())) t.add(home);
}
return t;
}
} else return null;
}
}

View File

@ -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<String> 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<String> t = new ArrayList<>();
for (String home : API.homelist(s.getName())) {
if(home.startsWith(a[0].toLowerCase())) t.add(home);
}
return t;
}
} else return null;
}
}

View File

@ -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 <command>
usage: Usage /<command>
aliases: [hub,spawn]
bettertp:
description: Manage the plugin
usage: Usage /bettertp help