This commit is contained in:
SuperRonanCraft 2020-02-23 01:17:08 -05:00
parent 3399eafa04
commit 07dae8fbc5
19 changed files with 523 additions and 302 deletions

View File

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

View File

@ -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<UUID, Long> cooldowns = new HashMap<>();
public HashMap<UUID, Boolean> 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<String> onTabComplete(CommandSender sendi, String[] args) {
List<String> 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<String> 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<String> 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 <world> <biome1, biome2...>
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 <biome1, biome2...>
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<String> getBiomes(String[] args, int start, CommandSender sendi) {
List<String> 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<String> 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;
}
}

View File

@ -26,8 +26,8 @@ public class RTP {
private Main pl;
//Cache
private HashMap<String, RTPWorld> customWorlds = new HashMap<>();
private HashMap<String, String> overriden = new HashMap<>();
public HashMap<String, RTPWorld> customWorlds = new HashMap<>();
public HashMap<String, String> overriden = new HashMap<>();
public me.SuperRonanCraft.BetterRTP.references.worlds.Default Default = new Default();
private Random rn = new Random();
private List<String> disabledWorlds, blockList;
@ -62,7 +62,7 @@ public class RTP {
customWorlds.put(entry.getKey().toString(), new Custom(entry.getKey().toString()));
}
List<String> disabledWorlds() {
public List<String> disabledWorlds() {
return disabledWorlds;
}
@ -71,7 +71,7 @@ public class RTP {
return disabledWorlds;
}
void start(Player p, CommandSender sendi, String worl, List<String> biomes, boolean delay) {
public void start(Player p, CommandSender sendi, String worl, List<String> 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;

View File

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

View File

@ -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<UUID, Long> cooldowns = new HashMap<>();
public HashMap<UUID, Boolean> 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<String> onTabComplete(CommandSender sendi, String[] args) {
List<String> 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<String> _cmdlist = cmd.getCmd().tabComplete(sendi, args);
if (_cmdlist != null)
list.addAll(_cmdlist);
}
}
}
return list;
}
public void addBiomes(List<String> 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<String> 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<String> getBiomes(String[] args, int start, CommandSender sendi) {
List<String> 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<String> 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;
}
}

View File

@ -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<String> tabComplete(CommandSender sendi, String[] args);
boolean permission(CommandSender sendi);
}

View File

@ -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 <biome1, biome2...>
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<String> 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);
}
}

View File

@ -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<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
public boolean permission(CommandSender sendi) {
return true;
}
}

View File

@ -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<String> 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<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
public boolean permission(CommandSender sendi) {
return Main.getInstance().getPerms().getInfo(sendi);
}
}

View File

@ -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 <world> <biome1> <biome2...>
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<String> tabComplete(CommandSender sendi, String[] args) {
List<String> 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();
}
}

View File

@ -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<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
public boolean permission(CommandSender sendi) {
return Main.getInstance().getPerms().getReload(sendi);
}
}

View File

@ -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<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
public boolean permission(CommandSender sendi) {
return true;
}
}

View File

@ -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 <world> <biome1, biome2...>
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<String> tabComplete(CommandSender sendi, String[] args) {
List<String> 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();
}
}

View File

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

View File

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

View File

@ -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<String> 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<?, ?>> 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<String> getBiomes() {
return Biomes;
}
@Override
public String getWorld() {
return world;
}
}

View File

@ -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<String> getBiomes() {
return Biomes;
}
@Override
public String getWorld() {
return null;
}
}

View File

@ -17,4 +17,6 @@ public interface RTPWorld {
int getPrice();
List<String> getBiomes();
String getWorld();
}

View File

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