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

View File

@ -1,19 +1,48 @@
package net.DeltaWings.Minecraft.BetterTP.Api; package net.DeltaWings.Minecraft.BetterTP.Api;
import java.io.File;
import java.util.ArrayList; 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.Config;
import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager;
/** /**
* API * API
*/ */
public class 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) { public static ArrayList<String> homelist(String player) {
Config c = new Config("data", player); Config c = new Config(getPlayersFolder(), player);
if(c.exist()) { if(c.exist()) {
return c.getSection(""); return c.getSection("");
} }
return new ArrayList<>(); 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.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.IOException; import java.io.IOException;
@ -15,125 +16,94 @@ import java.io.IOException;
public class Bettertp implements CommandExecutor { public class Bettertp implements CommandExecutor {
Config m = new Config("", "messages"); Config m = new Config("", "messages");
Config c = new Config("", "config");
@Override @Override
public boolean onCommand(CommandSender s, Command unu2, String unu1, String[] a) { public boolean onCommand(CommandSender s, Command unu2, String unu1, String[] a) {
if((s instanceof Player && s.hasPermission("bettertp.admin")) || s instanceof ConsoleCommandSender) {
Config g = new Config("", "config"); if(a.length == 1) {
if(s instanceof Player && s.hasPermission("bettertp.admin")) { if(a[0].equalsIgnoreCase("help")) help(s);
Player p = (Player) s; return true;
if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("home")) { } else if(a.length >= 2 && a.length <= 3) {
if(a.length == 2) home(s, a[1], "home"); if(a.length == 2 && (a[0].equalsIgnoreCase("set") || a[0].equalsIgnoreCase("del"))) {
else home(s, a[1], a[2]); if(a[1].equalsIgnoreCase("spawn") || a[1].equalsIgnoreCase("lobby")) set(s, a[1]);
} else if((a.length == 2 || a.length == 3) && a[0].equalsIgnoreCase("delhome")) { else if(a[1].equalsIgnoreCase("spawn") || a[1].equalsIgnoreCase("lobby")) del(s, a[1]);
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("&", "§"));
return true; 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 del(CommandSender s, String whattoset) {
Config t = new Config(API.getDataFolder(), whattoset);
if(t.exist()) {
try {
private void set() { 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) { private void home(CommandSender s, String player, String home) {
Config cp = new Config("data", player); Config cp = new Config(API.getPlayersFolder(), player);
if(cp.exist()) { if(cp.exist() && cp.isSet(home)) {
String t = 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).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) { 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)) { if(cp.exist() && cp.isSet(home)) {
cp.set(home, null); cp.set(home, null);
try { try {
@ -143,7 +113,7 @@ public class Bettertp implements CommandExecutor {
s.sendMessage("Error, Please call an Admin !"); s.sendMessage("Error, Please call an Admin !");
} }
s.sendMessage(m.getString("home.deleted").replace("[home]", home).replace("&", "§")); 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) { 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; package net.DeltaWings.Minecraft.BetterTP.Commands;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.IOException;
public class Delhome implements CommandExecutor { public class Delhome implements CommandExecutor {
private final Config m = new Config("", "messages"); private final Config m = new Config("", "messages");
@ -16,45 +16,30 @@ public class Delhome implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender s, Command command, String label, String[] a) { public boolean onCommand(CommandSender s, Command command, String label, String[] a) {
if(s instanceof Player && s.hasPermission("bettertp.delhome")) { if(s instanceof Player && s.hasPermission("bettertp.delhome")) {
Config c = new Config("data", s.getName()); if(a.length > 2) return false; //too many arguments
if(a.length == 1) { Config c = new Config(API.getPlayersFolder(), s.getName());
if(c.isSet(a[0])) { String homename = a.length == 0 ? "home" : a[0];
c.set(a[0], null); try {
try { if(c.exist() && c.isSet(homename)) {
c.save(); c.set(homename, null);
} catch ( IOException e ) { if(c.getSection("").size() == 0) {
e.printStackTrace(); c.delete();
s.sendMessage("Error, Please call an Admin !"); } else c.save();
} //sendmessage home deleted
s.sendMessage(m.getString("home.deleted").replace("[home]", a[0]).replace("&", "§"));
return true;
} else { } else {
s.sendMessage(m.getString("home.dont-exist").replace("[home]", a[0]).replace("&", "§")); //sendmessage home don't exist
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;
} }
} catch (Exception e) {
e.printStackTrace();
//sendmessage error happened
} }
} else if(s instanceof Player && !s.hasPermission("bettertp.delhome")) { return true;
s.sendMessage(m.getString("global.permission").replace("&", "§")); } else if(s instanceof ConsoleCommandSender) {
//sendmessage console can't use this command
return true; return true;
} else { } else {
s.sendMessage(m.getString("global.not-console")); //sendmessage missing permission
return true; return true;
} }
return false;
} }
} }

View File

@ -1,5 +1,6 @@
package net.DeltaWings.Minecraft.BetterTP.Commands; package net.DeltaWings.Minecraft.BetterTP.Commands;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -7,50 +8,34 @@ import org.bukkit.Location;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Home implements CommandExecutor { public class Home implements CommandExecutor {
private final Config m = new Config("", "messages"); private final Config m = new Config("", "messages");
@Override @Override
public boolean onCommand(CommandSender s, Command command, String label, String[] a) { public boolean onCommand(CommandSender s, Command command, String label, String[] a) {
if(s instanceof Player && s.hasPermission("bettertp.home")) { if(s instanceof Player && s.hasPermission("bettertp.home")) {
Config c = new Config("data", s.getName()); if(a.length > 1) return false; //too many arguments
if(c.exist()) { Config c = new Config(API.getPlayersFolder(), s.getName());
if(a.length == 0) { String homename = a.length == 0 ? "home" : a[0];
if ( c.isSet("home") ) { if(c.isSet(homename)) {
String t = "home."; ((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(homename+".world")), c.getDouble(homename+".x"), c.getDouble(homename+".y"), c.getDouble(homename+".z")));
((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString(t+"world")), c.getDouble(t+"x"), c.getDouble(t+"y"), c.getDouble(t+"z"))); //sendmessage teleported to home home
s.sendMessage(m.getString("home.teleported").replace("[home]", "home").replace("&", "§")); return true;
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;
}
}
} else { } else {
s.sendMessage(m.getString("home.dont-exist")); //sendmessage home don't exist
return true; return true;
} }
} else if(s instanceof Player && !s.hasPermission("bettertp.home")) { } else if(s instanceof ConsoleCommandSender) {
s.sendMessage(m.getString("global.permission").replace("&", "§")); //sendmessage console can't use that command
return true; return true;
} else { } else {
s.sendMessage(m.getString("global.not-console")); //sendmessage you don't have the permission
return true; return true;
} }
return false;
} }
} }

View File

@ -1,5 +1,6 @@
package net.DeltaWings.Minecraft.BetterTP.Commands; package net.DeltaWings.Minecraft.BetterTP.Commands;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
@ -8,23 +9,24 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Lobby implements CommandExecutor { public class LobbySpawn implements CommandExecutor {
private final Config m = new Config("", "messages"); private final Config m = new Config("", "messages");
@Override @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 instanceof Player ) {
if(s.hasPermission("bettertp.lobby")) { if(s.hasPermission("bettertp."+command)) {
Config c = new Config("data/lobby", "config"); Config c = new Config(API.getDataFolder(), command);
if(c.exist()) { if(c.exist()) {
Double y = c.getDouble("x", (double) -1); Double y = c.getDouble("x", (double) -1);
if(y != -1) { if(y != -1) {
((Player) s).teleport(new Location(Bukkit.getServer().getWorld(c.getString("world")), c.getDouble("x"), c.getDouble("y"), c.getDouble("z"))); ((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; return true;
} }
} else { } else {
s.sendMessage(m.getString("lobby.not-set").replace("&", "§")); s.sendMessage(m.getString(command+".not-set").replace("&", "§"));
return true; return true;
} }
} else { } else {

View File

@ -1,15 +1,16 @@
package net.DeltaWings.Minecraft.BetterTP.Commands; package net.DeltaWings.Minecraft.BetterTP.Commands;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
public class Sethome implements CommandExecutor { public class Sethome implements CommandExecutor {
@ -19,62 +20,45 @@ public class Sethome implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender s, Command command, String label, String[] a) { public boolean onCommand(CommandSender s, Command command, String label, String[] a) {
if(s instanceof Player && s.hasPermission("bettertp.sethome")) { if(s instanceof Player && s.hasPermission("bettertp.sethome")) {
Config c = new Config("data", s.getName()); if(a.length > 2) return false; //too many arguments
ArrayList<String> r = new ArrayList<>(); Config c = new Config(API.getPlayersFolder(), s.getName());
Integer maxhomes = -1;
for(String e : mc.getSection("maxhomes")) { 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; if(c.getSection("").size() >= maxhomes) { //Player already have max number of home
for(String e : r) {
if(c.getSection("").size() == mc.getInt("maxhomes." + e)) p = true;
}
if(p) {
s.sendMessage(m.getString("home.max").replace("[max]", c.getSection("").size() + "").replace("&", "§")); s.sendMessage(m.getString("home.max").replace("[max]", c.getSection("").size() + "").replace("&", "§"));
return true; return true;
} else { } else { //player can have more homes
if(!c.exist()) try { try {
c.create(); 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 ) { } catch ( IOException e ) {
e.printStackTrace(); e.printStackTrace();
s.sendMessage("Error, Please call an Admin !"); s.sendMessage("Error, Please call an Admin !");
} }
if(a.length == 0) { return true;
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;
}
} }
} else if(s instanceof Player && !s.hasPermission("bettertp.sethome")) { } else if(s instanceof ConsoleCommandSender) {
s.sendMessage(m.getString("global.permission").replace("&", "§")); //sendmessage can't be used as the console
return true; return true;
} else { } else {
s.sendMessage(m.getString("global.not-console")); //sendmessage don't have the permission
return true; 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.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
public class FileManager { public class FileManager {
public static List<String> listFiles(String path) { public static ArrayList<String> listFiles(String path) {
String[] t = new File(path).list(); String[] t = new File(path).list();
if(t == null) return new ArrayList<>(); 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(); String[] t = path.list();
if(t == null) return new ArrayList<>(); 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) { public static void delete(File path) {

View File

@ -1,20 +1,25 @@
package net.DeltaWings.Minecraft.BetterTP; package net.DeltaWings.Minecraft.BetterTP;
import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Commands.*; import net.DeltaWings.Minecraft.BetterTP.Commands.*;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import net.DeltaWings.Minecraft.BetterTP.TabCompleter.*; import net.DeltaWings.Minecraft.BetterTP.TabCompleter.*;
import org.bukkit.command.PluginCommand; import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bstats.bukkit.Metrics; import org.bstats.bukkit.Metrics;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.concurrent.Callable;
public final class Main extends JavaPlugin { public final class Main extends JavaPlugin {
private PluginDescriptionFile desc;
private static Main instance; private static Main instance;
public static Main getInstance() { public static Main getInstance() {
return instance; return instance;
@ -36,7 +41,8 @@ public final class Main extends JavaPlugin {
public void onEnable() { public void onEnable() {
instance = this; instance = this;
debug("Loading Variables"); debug("Loading Variables");
PluginManager pm = getServer().getPluginManager(); desc = this.getDescription();
//PluginManager pm = getServer().getPluginManager();
PluginCommand bettertp = getCommand("Bettertp"); PluginCommand bettertp = getCommand("Bettertp");
PluginCommand home = getCommand("Home"); PluginCommand home = getCommand("Home");
PluginCommand delhome = getCommand("Delhome"); PluginCommand delhome = getCommand("Delhome");
@ -53,16 +59,16 @@ public final class Main extends JavaPlugin {
} }
debug("Loaded Configuration !"); debug("Loaded Configuration !");
debug("Loading Events"); //debug("Loading Events");
//pm.registerEvents(new Event(), this); //pm.registerEvents(new Event(), this);
debug("Loaded Events"); //debug("Loaded Events");
debug("Loading Commands"); debug("Loading Commands");
//getCommand("Command").setExecutor(new Command()); //getCommand("Command").setExecutor(new Command());
bettertp.setExecutor(new Bettertp()); bettertp.setExecutor(new Bettertp());
bettertp.setTabCompleter(new BettertpTab()); bettertp.setTabCompleter(new BettertpTab());
getCommand("Spawn").setExecutor(new Spawn()); getCommand("Lobby").setExecutor(new LobbySpawn());
getCommand("Lobby").setExecutor(new Lobby());
home.setExecutor(new Home()); home.setExecutor(new Home());
home.setTabCompleter(new HomeTab()); home.setTabCompleter(new HomeTab());
getCommand("Sethome").setExecutor(new Sethome()); getCommand("Sethome").setExecutor(new Sethome());
@ -72,9 +78,11 @@ public final class Main extends JavaPlugin {
debug("Loaded Commands"); debug("Loaded Commands");
debug("Enabling Metrics"); if(new Config("", "config").getBoolean("metrics", true)) {
new Charts(new Metrics(this)); debug("Enabling Metrics");
log("Metrics Started : https://bstats.org/plugin/bukkit/plugin/"); loadCharts(new Metrics(this));
log("Metrics Started : https://bstats.org/plugin/bukkit/"+desc.getName()+"/");
}
log("Loaded !"); log("Loaded !");
} }
@ -114,6 +122,8 @@ public final class Main extends JavaPlugin {
c.create(); c.create();
c.header("How to config : https://bitbucket.org/delta-wings/bettertp/wiki/"); c.header("How to config : https://bitbucket.org/delta-wings/bettertp/wiki/");
c.set("debug", false); c.set("debug", false);
c.set("metrics", true);
c.set("donttouch.version", 1);
c.set("maxhomes.default", 1); c.set("maxhomes.default", 1);
c.set("spawn.work", "world"); c.set("spawn.work", "world");
c.set("spawn.server.lobby", false); c.set("spawn.server.lobby", false);
@ -121,4 +131,23 @@ public final class Main extends JavaPlugin {
c.save(); 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.Main;
import net.DeltaWings.Minecraft.BetterTP.Api.API; import net.DeltaWings.Minecraft.BetterTP.Api.API;
import net.DeltaWings.Minecraft.BetterTP.Libs.Config; import net.DeltaWings.Minecraft.BetterTP.Libs.Config;
import net.DeltaWings.Minecraft.BetterTP.Libs.FileManager;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class BettertpTab implements TabCompleter { 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 @Override
public List<String> onTabComplete(CommandSender s, Command c, String unused, String[] a) { public List<String> onTabComplete(CommandSender s, Command c, String unused, String[] a) {
Main.debug("Tab Completing c : "+ c.getName() +" + \nNa : " + a.length); Main.debug("Tab Completing c : "+ c.getName() +" + \na length: " + a.length);
for (String b: a) Main.debug(b); Main.debug("a : " + a.toString());
if(a.length > 0 && a[0].equals("")) { if(a.length == 1) { // no args
return Arrays.asList(menu);
}
if(a.length == 1) {
if(!a[0].equals("")) { if(!a[0].equals("")) {
List<String> l = new ArrayList<>(); List<String> l = new ArrayList<>();
for (String t: menu) if(t.startsWith(a[0].toLowerCase())) l.add(t); for (String t: menu) if(t.startsWith(a[0].toLowerCase())) l.add(t);
return l; return l;
} } else return Arrays.asList(menu);
} else if(a.length == 2) { } else if(a.length == 2) { // first argument done
String[] y; String[] y;
if (a[0].equalsIgnoreCase("set") || a[0].equalsIgnoreCase("del") || a[0].equalsIgnoreCase("delete")) y = setdel; 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("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; else return null;
//for pre-made sets
if (!a[1].equals("")) { if (!a[1].equals("")) {
List<String> l = new ArrayList<>(); List<String> l = new ArrayList<>();
for (String t : y) if (t.startsWith(a[1].toLowerCase())) l.add(t); 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; 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.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DelhomeTab implements TabCompleter { public class DelhomeTab implements TabCompleter {
@ -13,8 +14,16 @@ public class DelhomeTab implements TabCompleter {
@Override @Override
public List<String> onTabComplete(CommandSender s, Command u1, String unused, String[] a) { public List<String> onTabComplete(CommandSender s, Command u1, String unused, String[] a) {
if( a.length == 1) { if( a.length == 1) {
Config c = new Config("data", s.getName()); if(a[0] == "") {
return c.getSection(""); 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; } else return null;
} }
} }

View File

@ -6,6 +6,7 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class HomeTab implements TabCompleter { public class HomeTab implements TabCompleter {
@ -13,7 +14,16 @@ public class HomeTab implements TabCompleter {
@Override @Override
public List<String> onTabComplete(CommandSender s, Command u1, String unused, String[] a) { public List<String> onTabComplete(CommandSender s, Command u1, String unused, String[] a) {
if( a.length == 1) { 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; } else return null;
} }
} }

View File

@ -6,13 +6,10 @@ authors: [Aviortheking, LePhoenixArdent, Aipsyllone]
description: The best teleportation plugin description: The best teleportation plugin
website: https://delta-wings.net website: https://delta-wings.net
commands: commands:
spawn:
description: Teleport to the spawn
usage: Usage /spawn
lobby: lobby:
description: Teleport to the lobby description: Teleport to the <command>
usage: Usage /lobby usage: Usage /<command>
aliases: [hub] aliases: [hub,spawn]
bettertp: bettertp:
description: Manage the plugin description: Manage the plugin
usage: Usage /bettertp help usage: Usage /bettertp help