From 07dae8fbc57c428dbcb14dde75cbea40c8719501 Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Sun, 23 Feb 2020 01:17:08 -0500 Subject: [PATCH] 2.10.0 --- .../me/SuperRonanCraft/BetterRTP/Main.java | 2 +- .../BetterRTP/player/Commands.java | 291 ------------------ .../SuperRonanCraft/BetterRTP/player/RTP.java | 15 +- .../player/commands/CommandTypes.java | 23 ++ .../BetterRTP/player/commands/Commands.java | 159 ++++++++++ .../BetterRTP/player/commands/RTPCommand.java | 14 + .../player/commands/types/CmdBiome.java | 30 ++ .../player/commands/types/CmdHelp.java | 34 ++ .../player/commands/types/CmdInfo.java | 68 ++++ .../player/commands/types/CmdPlayer.java | 66 ++++ .../player/commands/types/CmdReload.java | 22 ++ .../player/commands/types/CmdVersion.java | 22 ++ .../player/commands/types/CmdWorld.java | 49 +++ .../BetterRTP/player/events/Interact.java | 2 +- .../BetterRTP/references/Permissions.java | 4 + .../BetterRTP/references/worlds/Custom.java | 10 +- .../BetterRTP/references/worlds/Default.java | 7 +- .../BetterRTP/references/worlds/RTPWorld.java | 2 + src/main/resources/plugin.yml | 5 +- 19 files changed, 523 insertions(+), 302 deletions(-) delete mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdReload.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdVersion.java create mode 100644 src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java index 90c1bac..acef9ad 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/Main.java @@ -1,6 +1,6 @@ package me.SuperRonanCraft.BetterRTP; -import me.SuperRonanCraft.BetterRTP.player.Commands; +import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.RTP; import me.SuperRonanCraft.BetterRTP.player.events.Listener; import me.SuperRonanCraft.BetterRTP.references.Econ; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java deleted file mode 100644 index 1a7a208..0000000 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/Commands.java +++ /dev/null @@ -1,291 +0,0 @@ -package me.SuperRonanCraft.BetterRTP.player; - -import me.SuperRonanCraft.BetterRTP.Main; -import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; -import org.bukkit.Bukkit; -import org.bukkit.World; -import org.bukkit.block.Biome; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; - -public class Commands { - - private Main pl; - HashMap cooldowns = new HashMap<>(); - public HashMap rtping = new HashMap<>(); - private boolean cooldownTimer; - private int timer, cooldown; - public static String[] cmds = {"help", "player", "world", "version", "reload", "biome"}; - - public Commands(Main pl) { - this.pl = pl; - } - - public void load() { - FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG); - timer = config.getInt("Settings.Delay.Time"); - cooldownTimer = config.getBoolean("Settings.Cooldown.Enabled"); - cooldown = config.getInt("Settings.Cooldown.Time"); - cooldowns.clear(); - } - - public void commandExecuted(CommandSender sendi, String cmd, String[] args) { - if (pl.getPerms().getUse(sendi)) - if (args == null) - rtp(sendi, cmd, null, null); - else if (args.length == 1) { - if (args[0].equalsIgnoreCase(cmds[0])) - help(sendi, cmd); - else if (args[0].equalsIgnoreCase(cmds[1])) - player(sendi, cmd, args); - else if (args[0].equalsIgnoreCase(cmds[2])) - world(sendi, cmd, args); - else if (args[0].equalsIgnoreCase(cmds[3])) - version(sendi); - else if (args[0].equalsIgnoreCase(cmds[4])) - reload(sendi); - else if (args[0].equalsIgnoreCase(cmds[5])) - biome(sendi, cmd, args); - else - invalid(sendi, cmd); - } else if (args.length >= 2 && args.length <= 3) { - if (args[0].equalsIgnoreCase(cmds[1])) - player(sendi, cmd, args); - else if (args[0].equalsIgnoreCase(cmds[2])) - world(sendi, cmd, args); - else if (args[0].equalsIgnoreCase(cmds[5])) - biome(sendi, cmd, args); - else - invalid(sendi, cmd); - } else if (args.length > 3) { - if (args[0].equalsIgnoreCase(cmds[5])) - biome(sendi, cmd, args); - else if (args[0].equalsIgnoreCase(cmds[1])) - player(sendi, cmd, args); - else - invalid(sendi, cmd); - } else - rtp(sendi, cmd, null, null); - else - noPerm(sendi); - } - - public List onTabComplete(CommandSender sendi, String[] args) { - List list = new ArrayList<>(); - if (args.length == 1) { - for (String s : cmds) - if (s.startsWith(args[0]) && permOf(sendi, s)) - list.add(s); - } else if (args.length == 2) { - if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1])) { - for (Player p : Bukkit.getOnlinePlayers()) - if (p.getDisplayName().startsWith(args[1])) - list.add(p.getDisplayName()); - } else if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2])) - for (World w : Bukkit.getWorlds()) - if (w.getName().startsWith(args[1]) && !pl.getRTP().disabledWorlds().contains(w.getName()) && pl - .getPerms().getAWorld(sendi, w.getName())) - list.add(w.getName()); - } else if (args.length == 3) { - if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1])) { - for (World w : Bukkit.getWorlds()) - if (w.getName().startsWith(args[2])) - list.add(w.getName()); - } else if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2]) && permOf(sendi, cmds[5])) - addBiomes(list, args); - } else if (args.length > 3) { - if (args[0].equalsIgnoreCase(cmds[2]) && permOf(sendi, cmds[2]) && permOf(sendi, cmds[5])) { - addBiomes(list, args); - } else if (args[0].equalsIgnoreCase(cmds[1]) && permOf(sendi, cmds[1]) && permOf(sendi, cmds[5])) - addBiomes(list, args); - } - if (args[0].equalsIgnoreCase(cmds[5]) && permOf(sendi, cmds[5])) - addBiomes(list, args); - return list; - } - - private void addBiomes(List list, String[] args) { - try { - for (Biome b : Biome.values()) - if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase())) - list.add(b.name().replaceAll("minecraft:", "")); - } catch (NoSuchMethodError e) { - //Not in 1.14.X - } - } - - //COMMANDS - private void rtp(CommandSender sendi, String cmd, String world, List biomes) { - if (sendi instanceof Player) - tp((Player) sendi, sendi, world, biomes); - else - sendi.sendMessage(pl.getText().colorPre("Must be a player to use this command! Try '/" + cmd + " help'")); - } - - private void help(CommandSender sendi, String cmd) { - pl.getText().getHelpList(sendi, cmd); - if (pl.getPerms().getRtpOther(sendi)) - pl.getText().getHelpPlayer(sendi, cmd); - if (sendi instanceof Player) { - if (pl.getPerms().getAWorld(sendi, null)) - pl.getText().getHelpWorld(sendi, cmd); - } else - pl.getText().getHelpWorld(sendi, cmd); - if (pl.getPerms().getReload(sendi)) - pl.getText().getHelpReload(sendi, cmd); - } - - @SuppressWarnings("all") - private void player(CommandSender sendi, String cmd, String[] args) { - if (permOf(sendi, args[0])) - if (args.length == 2) - if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) - tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null); - else if (Bukkit.getPlayer(args[1]) != null) - playerNotOnline(sendi, args[1]); - else - usage(sendi, cmd, args[0]); - else if (args.length >= 3) - if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) - tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getWorld(args[2]).getName(), getBiomes(args, 3, sendi)); - else if (Bukkit.getPlayer(args[1]) != null) - playerNotOnline(sendi, args[1]); - else - usage(sendi, cmd, args[0]); - else - usage(sendi, cmd, args[0]); - else - noPerm(sendi); - } - - //rtp world - private void world(CommandSender sendi, String cmd, String[] args) { - if (permOf(sendi, args[0])) - if (args.length >= 2) - rtp(sendi, cmd, args[1], getBiomes(args, 2, sendi)); - else - usage(sendi, cmd, args[0]); - else - noPerm(sendi); - } - - //rtp biome - private void biome(CommandSender sendi, String cmd, String[] args) { - if (permOf(sendi, args[0])) - if (args.length >= 2) - rtp(sendi, cmd, null, getBiomes(args, 1, sendi)); - else - usage(sendi, cmd, args[0]); - else - noPerm(sendi); - } - - private List getBiomes(String[] args, int start, CommandSender sendi) { - List biomes = new ArrayList<>(); - boolean error_sent = false; - if (permOf(sendi, cmds[5])) - for (int i = start; i < args.length; i++) { - String str = args[i]; - try { - biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name()); - } catch (Exception e) { - if (!error_sent) { - pl.getText().getOtherBiome(sendi, str); - error_sent = true; - } - } - } - return biomes; - } - - private void reload(CommandSender sendi) { - if (pl.getPerms().getReload(sendi)) - pl.reload(sendi); - else - noPerm(sendi); - } - - private void version(CommandSender sendi) { - sendi.sendMessage(pl.getText().colorPre("&aVersion #&e" + pl.getDescription().getVersion())); - } - - private void invalid(CommandSender sendi, String cmd) { - pl.getText().getInvalid(sendi, cmd); - } - - //INFORMATION - private void usage(CommandSender sendi, String cmd, String arg) { - if (arg.equalsIgnoreCase(cmds[1])) - pl.getText().getUsageRTPOther(sendi, cmd); - else if (arg.equalsIgnoreCase(cmds[2])) - pl.getText().getUsageWorld(sendi, cmd); - else if (arg.equalsIgnoreCase(cmds[5])) - pl.getText().getUsageBiome(sendi, cmd); - else - pl.getText().sms(sendi, "&cSomething went wrong!"); - } - - private void playerNotOnline(CommandSender sendi, String player) { - pl.getText().getNotOnline(sendi, player); - } - - private void noPerm(CommandSender sendi) { - pl.getText().getNoPermission(sendi); - } - - private void tp(Player player, CommandSender sendi, String world, List biomes) { - if (cooldown(sendi, player)) { - boolean delay = false; - if (!pl.getPerms().getBypassDelay(player)) - if (timer != 0) - if (sendi == player) - delay = true; - pl.getRTP().start(player, sendi, world, biomes, delay); - } - } - - private boolean cooldown(CommandSender sendi, Player player) { - if (sendi != player || pl.getPerms().getBypassCooldown(player)) - return true; - else if (rtping.containsKey(player.getUniqueId())) - if (rtping.get(player.getUniqueId())) { - pl.getText().getAlready(player); - return false; - } - if (cooldownTimer) { - Player p = (Player) sendi; - if (cooldowns.containsKey(p.getUniqueId())) { - long Left = ((cooldowns.get(p.getUniqueId()) / 1000) + cooldown) - (System.currentTimeMillis() / 1000); - if (!pl.getPerms().getBypassDelay(p)) - Left = Left + timer; - if (Left > 0) { - // Still cooling down - pl.getText().getCooldown(sendi, String.valueOf(Left)); - return false; - } else { - cooldowns.remove(p.getUniqueId()); - return true; - } - } else - cooldowns.put(p.getUniqueId(), System.currentTimeMillis()); - } - return true; - } - - private boolean permOf(CommandSender sendi, String cmd) { - if (cmd.equalsIgnoreCase(cmds[4])) - return pl.getPerms().getReload(sendi); - else if (cmd.equalsIgnoreCase(cmds[1])) - return pl.getPerms().getRtpOther(sendi); - else if (cmd.equalsIgnoreCase(cmds[2])) - return pl.getPerms().getWorld(sendi); - else if (cmd.equalsIgnoreCase(cmds[5])) - return pl.getPerms().getBiome(sendi); - return true; - } -} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java index 0a28194..2d45a20 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java @@ -26,8 +26,8 @@ public class RTP { private Main pl; //Cache - private HashMap customWorlds = new HashMap<>(); - private HashMap overriden = new HashMap<>(); + public HashMap customWorlds = new HashMap<>(); + public HashMap overriden = new HashMap<>(); public me.SuperRonanCraft.BetterRTP.references.worlds.Default Default = new Default(); private Random rn = new Random(); private List disabledWorlds, blockList; @@ -62,7 +62,7 @@ public class RTP { customWorlds.put(entry.getKey().toString(), new Custom(entry.getKey().toString())); } - List disabledWorlds() { + public List disabledWorlds() { return disabledWorlds; } @@ -71,7 +71,7 @@ public class RTP { return disabledWorlds; } - void start(Player p, CommandSender sendi, String worl, List biomes, boolean delay) { + public void start(Player p, CommandSender sendi, String worl, List biomes, boolean delay) { // Check overrides String world = worl; if (world == null) @@ -275,6 +275,13 @@ public class RTP { private Location getLocAtNormal(int x, int z, World world, Float yaw, Float pitch, PlayerWorld pWorld) { Block b = world.getHighestBlockAt(x, z); + //System.out.println("-----------"); + //System.out.println(b.getType().isSolid() + " " + b.getType().name()); + if (b.getType() == Material.AIR || !b.getType().isSolid()) { //1.15.1 or less + int y = world.getHighestBlockYAt(x, z); + b = world.getBlockAt(x, y - 1, z); + } + //System.out.println(b.getType().isSolid() + " " + b.getType().name()); if (!badBlock(b.getType().name(), x, z, pWorld.getWorld(), pWorld.getBiomes())) return new Location(world, (x + 0.5), b.getY() + 1, (z + 0.5), yaw, pitch); return null; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java new file mode 100644 index 0000000..7962aae --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/CommandTypes.java @@ -0,0 +1,23 @@ +package me.SuperRonanCraft.BetterRTP.player.commands; + +import me.SuperRonanCraft.BetterRTP.player.commands.types.*; + +public enum CommandTypes { + BIOME(new CmdBiome()), + HELP(new CmdHelp()), + INFO(new CmdInfo()), + PLAYER(new CmdPlayer()), + RELOAD(new CmdReload()), + VERSION(new CmdVersion()), + WORLD(new CmdWorld()); + + private RTPCommand cmd; + + CommandTypes(RTPCommand cmd) { + this.cmd = cmd; + } + + public RTPCommand getCmd() { + return cmd; + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java new file mode 100644 index 0000000..7430866 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java @@ -0,0 +1,159 @@ +package me.SuperRonanCraft.BetterRTP.player.commands; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; +import org.bukkit.block.Biome; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +public class Commands { + + private Main pl; + public HashMap cooldowns = new HashMap<>(); + public HashMap rtping = new HashMap<>(); + private boolean cooldownTimer; + private int timer, cooldown; + public static String[] cmds = {"help", "player", "world", "version", "reload", "biome"}; + + public Commands(Main pl) { + this.pl = pl; + } + + public void load() { + FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG); + timer = config.getInt("Settings.Delay.Time"); + cooldownTimer = config.getBoolean("Settings.Cooldown.Enabled"); + cooldown = config.getInt("Settings.Cooldown.Time"); + cooldowns.clear(); + } + + public void commandExecuted(CommandSender sendi, String label, String[] args) { + if (pl.getPerms().getUse(sendi)) { + if (args.length > 0) { + for (CommandTypes cmd : CommandTypes.values()) { + if (cmd.name().equalsIgnoreCase(args[0])) { + if (cmd.getCmd().permission(sendi)) + cmd.getCmd().execute(sendi, label, args); + else + noPerm(sendi); + return; + } + } + invalid(sendi, label); + } else + rtp(sendi, label, null, null); + } else + noPerm(sendi); + } + + private void invalid(CommandSender sendi, String cmd) { + pl.getText().getInvalid(sendi, cmd); + } + + public List onTabComplete(CommandSender sendi, String[] args) { + List list = new ArrayList<>(); + if (args.length == 1) { + for (CommandTypes cmd : CommandTypes.values()) { + if (cmd.name().toLowerCase().startsWith(args[0].toLowerCase()) && cmd.getCmd().permission(sendi)) + list.add(cmd.name().toLowerCase()); + } + } else if (args.length > 1) { + for (CommandTypes cmd : CommandTypes.values()) { + if (cmd.name().equalsIgnoreCase(args[0]) && cmd.getCmd().permission(sendi)) { + List _cmdlist = cmd.getCmd().tabComplete(sendi, args); + if (_cmdlist != null) + list.addAll(_cmdlist); + } + } + } + return list; + } + + public void addBiomes(List list, String[] args) { + try { + for (Biome b : Biome.values()) + if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase())) + list.add(b.name().replaceAll("minecraft:", "")); + } catch (NoSuchMethodError e) { + //Not in 1.14.X + } + } + + public void rtp(CommandSender sendi, String cmd, String world, List biomes) { + if (sendi instanceof Player) + tp((Player) sendi, sendi, world, biomes); + else + sendi.sendMessage(pl.getText().colorPre("Must be a player to use this command! Try '/" + cmd + " help'")); + } + + //Custom biomes + public List getBiomes(String[] args, int start, CommandSender sendi) { + List biomes = new ArrayList<>(); + boolean error_sent = false; + if (Main.getInstance().getPerms().getBiome(sendi)) + for (int i = start; i < args.length; i++) { + String str = args[i]; + try { + biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name()); + } catch (Exception e) { + if (!error_sent) { + pl.getText().getOtherBiome(sendi, str); + error_sent = true; + } + } + } + return biomes; + } + + public void playerNotOnline(CommandSender sendi, String player) { + pl.getText().getNotOnline(sendi, player); + } + + private void noPerm(CommandSender sendi) { + pl.getText().getNoPermission(sendi); + } + + public void tp(Player player, CommandSender sendi, String world, List biomes) { + if (cooldown(sendi, player)) { + boolean delay = false; + if (!pl.getPerms().getBypassDelay(player)) + if (timer != 0) + if (sendi == player) + delay = true; + pl.getRTP().start(player, sendi, world, biomes, delay); + } + } + + private boolean cooldown(CommandSender sendi, Player player) { + if (sendi != player || pl.getPerms().getBypassCooldown(player)) + return true; + else if (rtping.containsKey(player.getUniqueId())) + if (rtping.get(player.getUniqueId())) { + pl.getText().getAlready(player); + return false; + } + if (cooldownTimer) { + Player p = (Player) sendi; + if (cooldowns.containsKey(p.getUniqueId())) { + long Left = ((cooldowns.get(p.getUniqueId()) / 1000) + cooldown) - (System.currentTimeMillis() / 1000); + if (!pl.getPerms().getBypassDelay(p)) + Left = Left + timer; + if (Left > 0) { + // Still cooling down + pl.getText().getCooldown(sendi, String.valueOf(Left)); + return false; + } else { + cooldowns.remove(p.getUniqueId()); + return true; + } + } else + cooldowns.put(p.getUniqueId(), System.currentTimeMillis()); + } + return true; + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java new file mode 100644 index 0000000..2377f09 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java @@ -0,0 +1,14 @@ +package me.SuperRonanCraft.BetterRTP.player.commands; + +import org.bukkit.command.CommandSender; + +import java.util.List; + +public interface RTPCommand { + + void execute(CommandSender sendi, String label, String[] args); + + List tabComplete(CommandSender sendi, String[] args); + + boolean permission(CommandSender sendi); +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java new file mode 100644 index 0000000..cec172a --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java @@ -0,0 +1,30 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.command.CommandSender; + +import java.util.List; + +public class CmdBiome implements RTPCommand { + + //rtp biome + public void execute(CommandSender sendi, String label, String[] args) { + if (args.length >= 2) + Main.getInstance().getCmd().rtp(sendi, label, null, Main.getInstance().getCmd().getBiomes(args, 1, sendi)); + else + usage(sendi, label); + } + + public List tabComplete(CommandSender sendi, String[] args) { + return null; + } + + public boolean permission(CommandSender sendi) { + return Main.getInstance().getPerms().getBiome(sendi); + } + + public void usage(CommandSender sendi, String label) { + Main.getInstance().getText().getUsageBiome(sendi, label); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java new file mode 100644 index 0000000..9144d9d --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java @@ -0,0 +1,34 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.List; + +public class CmdHelp implements RTPCommand { + + public void execute(CommandSender sendi, String label, String[] args) { + Main pl = Main.getInstance(); + pl.getText().getHelpList(sendi, label); + if (pl.getPerms().getRtpOther(sendi)) + pl.getText().getHelpPlayer(sendi, label); + if (sendi instanceof Player) { + if (pl.getPerms().getAWorld(sendi, null)) + pl.getText().getHelpWorld(sendi, label); + } else + pl.getText().getHelpWorld(sendi, label); + if (pl.getPerms().getReload(sendi)) + pl.getText().getHelpReload(sendi, label); + } + + public List tabComplete(CommandSender sendi, String[] args) { + return null; + } + + + public boolean permission(CommandSender sendi) { + return true; + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java new file mode 100644 index 0000000..42e17f2 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java @@ -0,0 +1,68 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.WorldBorder; +import org.bukkit.command.CommandSender; + +import java.util.ArrayList; +import java.util.List; + +public class CmdInfo implements RTPCommand { + + public void execute(CommandSender sendi, String label, String[] args) { + List info = new ArrayList<>(); + info.add("&6BetterRTP Info"); + for (World w : Bukkit.getWorlds()) { + info.add("&aWorld: &7" + w.getName()); + if (Main.getInstance().getRTP().getDisabledWorlds().contains(w.getName())) //DISABLED + info.add("&7- &6Disabled: &bTrue"); + else { + info.add("&7- &6Disabled: &cFalse"); + if (Main.getInstance().getRTP().overriden.containsKey(w.getName())) + info.add("&7- &6Overriden: &bTrue"); + else { + info.add("&7- &6Overriden: &cFalse"); + RTPWorld _rtpworld = Main.getInstance().getRTP().Default; + for (RTPWorld __rtpworld : Main.getInstance().getRTP().customWorlds.values()) { + if (__rtpworld.getWorld().equals(w.getName())) { + _rtpworld = __rtpworld; + break; + } + } + if (_rtpworld == Main.getInstance().getRTP().Default) + info.add("&7- &6Custom: &cFalse"); + else + info.add("&7- &6Custom: &bTrue"); + if (_rtpworld.getUseWorldborder()) { + info.add("&7- &6UseWorldborder: &bTrue"); + WorldBorder border = w.getWorldBorder(); + info.add("&7- &6Center X: &7" + border.getCenter().getBlockX()); + info.add("&7- &6Center Z: &7" + border.getCenter().getBlockZ()); + info.add("&7- &6MaxRad: &7" + (border.getSize() / 2)); + } else { + info.add("&7- &6UseWorldborder: &cFalse"); + info.add("&7- &6Center X: &7" + _rtpworld.getCenterX()); + info.add("&7- &6Center Z: &7" + _rtpworld.getCenterZ()); + info.add("&7- &6MaxRad: &7" + _rtpworld.getMaxRad()); + } + info.add("&7- &6MinRad: &7" + _rtpworld.getMinRad()); + } + } + } + info.forEach(str -> + info.set(info.indexOf(str), Main.getInstance().getText().color(str))); + sendi.sendMessage(info.toArray(new String[0])); + } + + public List tabComplete(CommandSender sendi, String[] args) { + return null; + } + + public boolean permission(CommandSender sendi) { + return Main.getInstance().getPerms().getInfo(sendi); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java new file mode 100644 index 0000000..3a70883 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdPlayer.java @@ -0,0 +1,66 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes; +import me.SuperRonanCraft.BetterRTP.player.commands.Commands; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class CmdPlayer implements RTPCommand { + + //rtp player + public void execute(CommandSender sendi, String label, String[] args) { + if (args.length == 2) + if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) + getCmd().tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null); + else if (Bukkit.getPlayer(args[1]) != null) + getCmd().playerNotOnline(sendi, args[1]); + else + usage(sendi, label); + else if (args.length >= 3) + if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) + getCmd().tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getWorld(args[2]).getName(), getCmd().getBiomes(args, 3, sendi)); + else if (Bukkit.getPlayer(args[1]) != null) + getCmd().playerNotOnline(sendi, args[1]); + else + usage(sendi, label); + else + usage(sendi, label); + } + + public List tabComplete(CommandSender sendi, String[] args) { + List list = new ArrayList<>(); + System.out.println(this.toString()); + if (args.length == 2) { + for (Player p : Bukkit.getOnlinePlayers()) + if (p.getDisplayName().toLowerCase().startsWith(args[1].toLowerCase())) + list.add(p.getDisplayName()); + } else if (args.length == 3) { + for (World w : Bukkit.getWorlds()) + if (w.getName().startsWith(args[2]) && !Main.getInstance().getRTP().disabledWorlds().contains(w.getName())) + list.add(w.getName()); + } else if (args.length > 3) { + if (CommandTypes.BIOME.getCmd().permission(sendi)) + getCmd().addBiomes(list, args); + } + return list; + } + + public boolean permission(CommandSender sendi) { + return Main.getInstance().getPerms().getRtpOther(sendi); + } + + public void usage(CommandSender sendi, String label) { + Main.getInstance().getText().getUsageRTPOther(sendi, label); + } + + private Commands getCmd() { + return Main.getInstance().getCmd(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdReload.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdReload.java new file mode 100644 index 0000000..f4371d4 --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdReload.java @@ -0,0 +1,22 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.command.CommandSender; + +import java.util.List; + +public class CmdReload implements RTPCommand { + + public void execute(CommandSender sendi, String label, String[] args) { + Main.getInstance().reload(sendi); + } + + public List tabComplete(CommandSender sendi, String[] args) { + return null; + } + + public boolean permission(CommandSender sendi) { + return Main.getInstance().getPerms().getReload(sendi); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdVersion.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdVersion.java new file mode 100644 index 0000000..35bd58c --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdVersion.java @@ -0,0 +1,22 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.command.CommandSender; + +import java.util.List; + +public class CmdVersion implements RTPCommand { + + public void execute(CommandSender sendi, String label, String[] args) { + sendi.sendMessage(Main.getInstance().getText().colorPre("&aVersion #&e" + Main.getInstance().getDescription().getVersion())); + } + + public List tabComplete(CommandSender sendi, String[] args) { + return null; + } + + public boolean permission(CommandSender sendi) { + return true; + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java new file mode 100644 index 0000000..e6d857e --- /dev/null +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdWorld.java @@ -0,0 +1,49 @@ +package me.SuperRonanCraft.BetterRTP.player.commands.types; + +import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes; +import me.SuperRonanCraft.BetterRTP.player.commands.Commands; +import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.command.CommandSender; + +import java.util.ArrayList; +import java.util.List; + +public class CmdWorld implements RTPCommand { + + //rtp world + public void execute(CommandSender sendi, String label, String[] args) { + if (args.length >= 2) + Main.getInstance().getCmd().rtp(sendi, label, args[1], Main.getInstance().getCmd().getBiomes(args, 2, sendi)); + else + usage(sendi, label); + } + + public List tabComplete(CommandSender sendi, String[] args) { + List list = new ArrayList<>(); + if (args.length == 2) { + for (World w : Bukkit.getWorlds()) + if (w.getName().startsWith(args[1]) && !Main.getInstance().getRTP().disabledWorlds().contains(w.getName()) && + Main.getInstance().getPerms().getAWorld(sendi, w.getName())) + list.add(w.getName()); + } else if (args.length >= 3) { + if (CommandTypes.BIOME.getCmd().permission(sendi)) + getCmd().addBiomes(list, args); + } + return list; + } + + public boolean permission(CommandSender sendi) { + return Main.getInstance().getPerms().getWorld(sendi); + } + + public void usage(CommandSender sendi, String label) { + Main.getInstance().getText().getUsageWorld(sendi, label); + } + + private Commands getCmd() { + return Main.getInstance().getCmd(); + } +} diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java index eeeaca8..6bdaf29 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Interact.java @@ -2,7 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.events; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.Main; -import me.SuperRonanCraft.BetterRTP.player.Commands; +import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.entity.Player; diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/Permissions.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/Permissions.java index 50ff062..cd1f504 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/Permissions.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/Permissions.java @@ -28,6 +28,10 @@ public class Permissions { return perm(pre + "reload", sendi); } + public boolean getInfo(CommandSender sendi) { + return perm(pre + "info", sendi); + } + public boolean getUpdate(CommandSender sendi) { return perm(pre + "updater", sendi); } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Custom.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Custom.java index 43eb556..18cb867 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Custom.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Custom.java @@ -3,14 +3,13 @@ package me.SuperRonanCraft.BetterRTP.references.worlds; import me.SuperRonanCraft.BetterRTP.Main; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import org.bukkit.Bukkit; -import org.bukkit.World; import java.util.ArrayList; import java.util.List; import java.util.Map; public class Custom implements RTPWorld { - public World world; + public String world; private boolean useWorldborder = false; private int CenterX, CenterZ, maxBorderRad, minBorderRad, price; private List Biomes; @@ -19,7 +18,7 @@ public class Custom implements RTPWorld { String pre = "CustomWorlds."; FileBasics.FILETYPE config = Main.getInstance().getFiles().getType(FileBasics.FILETYPE.CONFIG); List> map = config.getMapList("CustomWorlds"); - this.world = Bukkit.getWorld(world); + this.world = world; //Find Custom World and cache values for (Map m : map) { @@ -140,4 +139,9 @@ public class Custom implements RTPWorld { public List getBiomes() { return Biomes; } + + @Override + public String getWorld() { + return world; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Default.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Default.java index 23e5d26..277b90a 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Default.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/Default.java @@ -1,8 +1,8 @@ package me.SuperRonanCraft.BetterRTP.references.worlds; -import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.Main; +import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import org.bukkit.Bukkit; import java.util.List; @@ -73,4 +73,9 @@ public class Default implements RTPWorld { public List getBiomes() { return Biomes; } + + @Override + public String getWorld() { + return null; + } } diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/RTPWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/RTPWorld.java index a1253af..785ae52 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/RTPWorld.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/worlds/RTPWorld.java @@ -17,4 +17,6 @@ public interface RTPWorld { int getPrice(); List getBiomes(); + + String getWorld(); } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ab38411..8d8f719 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: me.SuperRonanCraft.BetterRTP.Main -version: 2.9.4 +version: 2.10.0 name: BetterRTP author: SuperRonanCraft softdepend: [Vault, WorldGuard, GriefPrevention, Factions] @@ -48,4 +48,7 @@ permissions: default: op betterrtp.updater: description: Get notification on new updates + default: op + betterrtp.info: + description: View info about all worlds rtp will work in default: op \ No newline at end of file