From dc4085e211701b213f23bb373b7769d7f91ad191 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sat, 5 Jan 2019 00:53:21 -0500 Subject: Finished Teleport Module --- .../com/redstoner/modules/teleport/TPAType.java | 5 + .../com/redstoner/modules/teleport/Teleport.cmd | 114 ++--- .../com/redstoner/modules/teleport/Teleport.java | 547 ++++++++++++++------- 3 files changed, 427 insertions(+), 239 deletions(-) create mode 100644 src/main/java/com/redstoner/modules/teleport/TPAType.java diff --git a/src/main/java/com/redstoner/modules/teleport/TPAType.java b/src/main/java/com/redstoner/modules/teleport/TPAType.java new file mode 100644 index 0000000..3e50723 --- /dev/null +++ b/src/main/java/com/redstoner/modules/teleport/TPAType.java @@ -0,0 +1,5 @@ +package com.redstoner.modules.teleport; + +public enum TPAType { + TPA, TPAHERE +} diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.cmd b/src/main/java/com/redstoner/modules/teleport/Teleport.cmd index 86ce18e..9a4a72d 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.cmd +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.cmd @@ -1,59 +1,60 @@ -command teleport { - alias eteleport; - alias tp; - alias etp; +command tp { + alias teleport; alias to; - alias eto; - alias tpo; - alias etpo; - alias tp2p; - alias etp2p; + [string:player] { run tp player; - perm utils.teleport.tp; + perm utils.teleport.tpa; + type player; } [string:player] [string:player2] { run tp2 player player2; - perm utils.teleport.tp.other; + perm utils.teleport.tpa; + } + [int:x] [int:y] [int:z] { + run tploc x y z; + perm utils.teleport.tploc; + type player; + } + + [string:player] [int:x] [int:y] [int:z] { + run tploc2 player x y z; + perm utils.teleport.tploc.other; } } -command teleporthere { - alias eteleporthere; - alias tphere; - alias etphere; - alias tpohere; - alias etpohere; +command tphere { + alias tph; + alias teleoprthere; perm utils.teleport.tp; + type player; + [string:player] { run tphere player; perm utils.teleport.tp.here; } } -command teleportask { - alias eteleportask; - alias tpa; - alias etpa; +command tpa { alias tpr; - alias etpr; alias tpask; - alias etpask; + alias teleportask; perm utils.teleport.tpa; + type player; + [string:player] { run tpa player; } } -command teleportaskhere { - alias eteleportaskhere; - alias tpahere, - alias etpahere; +command tpahere { + alias tpah; alias tprhere; - alias etrphere; alias tpaskhere; - alias etpaskhere; + alias teleportaskhere; perm utils.teleport.tpa; + type player; + [string:player] { run tpahere player; help ask another player to teleport to you.; @@ -61,11 +62,12 @@ command teleportaskhere { } command tpall { - alias etpall; perm utils.teleport.tpall; + [empty] { run tpall; help Teleports everyone to you.; + type player; } [string:player] { run tpall2 player; @@ -73,53 +75,46 @@ command tpall { } } -command tpaall { - alias etpall; - perm utils.teleport.tpaall; - [empty] { - run tpaall; - help Sends a tpa request to every player.; - } - [string:player] { - run tpaall2 player; - help Sends a tpa request to every player.; - } -} - command tpaccept { - alias etpaccept; alias tpyes; - alias etpyes; perm utils.teleport.request; + type player; + [empty] { run tpaccept; help Accepts the latest pending tpa request.; } - [int:index] { - run tpaccept2 index; + [string:player] { + run tpaccept2 player; help Accepts the specified pending tpa request.; } } -command tpacancel { - alias etpacencel; +command tpcancel { + alias tpastop; perm utils.teleport.request; + type player; + [empty] { run tpacancel; - help Cancels an outgoing pending tpa request.; + help Cancels the latest outgoing pending tpa request.; + } + [string:player] { + run tpacancel2 player; + help Cancels the specific outgoing pending tpa request.; } } command tpdeny { - alias etpdeny; alias tpno; - alias etpno; perm utils.teleport.request; + type player; + [empty] { run tpdeny; } - [int:index] { - run tpdeny2 index; + [string:player] { + run tpdeny2 player; } } @@ -128,20 +123,19 @@ command tplist { alias tpl; alias etpl; perm utils.teleport.request; + type player; + [empty] { run tplist; } } command tptoggle { - alias etptoggle; perm utils.teleport.toggle; + type player; + [string:status] { run tptoggle status; - help sets your tpa status; + help sets your tpa status (All, ToMe, ToThem, None); } - [string:command] [string:status] { - run tptoggle2 command status; - help sets your tpa status for only one command (e.g. tpa/tpahere).; - } } \ No newline at end of file diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index 3ad9f63..8eb4b76 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -1,10 +1,14 @@ package com.redstoner.modules.teleport; -import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import com.nemez.cmdmgr.Command; import com.redstoner.annotations.Commands; @@ -13,250 +17,435 @@ import com.redstoner.misc.CommandHolderType; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; -import net.nemez.chatapi.click.Message; +import net.nemez.chatapi.ChatAPI; @Commands(CommandHolderType.File) @Version(major = 5, minor = 0, revision = 0, compatible = 4) public class Teleport implements Module { - public static final String PERMISSION_TELEPORT = "utils.admin.teleport"; - - public ArrayList pending_requests; + public static final String PERMISSION_TELEPORT = "utils.teleport.tp"; + public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other"; + + private Map> pending_requests = new HashMap<>(); + private Map> last_request = new HashMap<>(); + private Map> last_request_got = new HashMap<>(); + + @Command(hook = "tploc") + public void tploc(CommandSender sender, int x, int y, int z) { + Player p = (Player) sender; + + p.teleport(new Location(p.getWorld(), x, y, z), TeleportCause.COMMAND); + getLogger().message(sender, "Teleported to &e(" + x + "," + y + "," + z + ")&7."); + } - @Override - public void postEnable() - { - pending_requests = new ArrayList(); + @Command(hook = "tploc2") + public void tploc2(CommandSender sender, String player, int x, int y, int z) { + Player p = Bukkit.getPlayer(player); + + if (p == null) + playerDoesNotExistError(sender, player); + else if (sender.getName().equals(p.getName())) + cannotTpToYourself(sender); + else { + p.teleport(new Location(p.getWorld(), x, y, z), TeleportCause.COMMAND); + getLogger().message(sender, "Teleported &e" + p.getDisplayName() + + "&7 to &e(" + x + "," + y + "," + z + ")&7."); + getLogger().message(p, "You've been teleported to &e(" + x + "," + y + "," + z + ")&7, by &e" + + (sender instanceof Player? ((Player)sender).getDisplayName() + : sender.getName()) + "&7."); + } } @Command(hook = "tp") - public boolean teleport(CommandSender sender, String player) - { - if (!sender.hasPermission(PERMISSION_TELEPORT)) - return tpa(sender, player); - return true; + public void teleport(CommandSender sender, String player) { + if (!sender.hasPermission(PERMISSION_TELEPORT)) { + tpa(sender, player); + return; + } + + Player p = Bukkit.getPlayer(player); + if (p == null) + playerDoesNotExistError(sender, player); + else if (sender.getName().equals(p.getName())) + cannotTpToYourself(sender); + else { + ((Player)sender).teleport(p, TeleportCause.COMMAND); + getLogger().message(sender, "Teleported to &e" + p.getDisplayName() + "&7."); + } } @Command(hook = "tp2") - public boolean teleport(CommandSender sender, String player, String player2) - { - if (!sender.hasPermission(PERMISSION_TELEPORT)) - if (player2.equals(((Player) sender).getName())) - return tpahere(sender, player); - else - { - getLogger().message(sender, "You do not have the required permissions to run that Command!"); - return true; - } + public void teleport(CommandSender sender, String player, String player2) { + if (!sender.hasPermission(PERMISSION_TELEPORT) + && sender.getName().equalsIgnoreCase(player2)) { + tpahere(sender, player); + return; + } + Player p1 = Bukkit.getPlayer(player); - Player p2 = Bukkit.getPlayer(player2); - if (p1 == null || p2 == null) - { - getLogger().message(sender, true, "The specified player couldn't be found!"); - return true; + Player p2 = Bukkit.getPlayer(player); + + if (p1 == null) + playerDoesNotExistError(sender, player); + else if (p2 == null) + playerDoesNotExistError(sender, player2); + else if (p1.getName().equals(p2.getName())) + cannotTpToYourself(sender); + else { + p1.teleport(p2, TeleportCause.COMMAND); + getLogger().message(sender, "&e" +p1.getDisplayName() + "&7 has been teleported to &e" + + p2.getDisplayName() + "&7."); + getLogger().message(p1, "You've been teleported to &e" + p2.getDisplayName() + + "&7 by &e" + (sender instanceof Player? + ((Player)sender).getDisplayName(): sender.getName())); } - p1.teleport(p2); - getLogger().message(p1, "You have been teleported to: " + p2.getDisplayName()); - if (!sender.getName().equals(p1.getName())) - getLogger().message(sender, - p1.getDisplayName() + "&7 has been teleported to " + p2.getDisplayName() + "&7!"); - return true; } @Command(hook = "tphere") - public boolean tphere(CommandSender sender, String player) - { - return true; + public void tphere(CommandSender sender, String player) { + Player p = Bukkit.getPlayer(player); + if (p == null) + playerDoesNotExistError(sender, player); + else if (sender.getName().equals(p.getName())) + cannotTpToYourself(sender); + else { + p.teleport((Player)sender); + getLogger().message(sender, "&e" + p.getDisplayName() + "&7 has been teleported to you."); + getLogger().message(p, "&e" + ((Player)sender).getDisplayName() + "&7 has teleported you to them."); + } } @Command(hook = "tpa") - public boolean tpa(CommandSender sender, String player) - { - return true; + public void tpa(CommandSender sender, String player) { + Player p = Bukkit.getPlayer(player); + if (p == null) + playerDoesNotExistError(sender, player); + + else if (sender.getName().equals(p.getName())) + cannotTpToYourself(sender); + + else if ( (Boolean) DataManager.getOrDefault(p, "allow-tpa", true) == false ) + getLogger().message(sender, true, "&e" + p.getDisplayName() + "&7 doesn't accept TPA requests."); + + else { + Player s = (Player) sender; + insertIntoMaps(s, p, TPAType.TPA); + getLogger().message(sender, "TPA request sent to &e" + p.getDisplayName() + "&7."); + notifyAskie(p, s, TPAType.TPA); + } + } @Command(hook = "tpahere") - public boolean tpahere(CommandSender sender, String player) - { - return true; + public void tpahere(CommandSender sender, String player) { + Player p = Bukkit.getPlayer(player); + if (p == null) + playerDoesNotExistError(sender, player); + + else if (sender.getName().equals(p.getName())) + cannotTpToYourself(sender); + + else if ( (Boolean) DataManager.getOrDefault(p, "allow-tpahere", true) == false ) + getLogger().message(sender, true, "&e" + p.getDisplayName() + "&7 doesn't accept TPA Here requests."); + + else { + Player s = (Player) sender; + insertIntoMaps(s, p, TPAType.TPAHERE); + getLogger().message(sender, "TPA Here request sent to &e" + p.getDisplayName() + "&7."); + notifyAskie(p, s, TPAType.TPAHERE); + } } @Command(hook = "tpall") - public boolean tpall(CommandSender sender) - { - return true; + public void tpall(CommandSender sender) { + Player to = (Player) sender; + for (Player p : Bukkit.getOnlinePlayers()) { + if (p.getName().equals(sender.getName())) + continue; + p.teleport(to, TeleportCause.COMMAND); + getLogger().message(p, "&e" + to.getDisplayName() + "&7 has teleported everyone to them."); + } + getLogger().message(sender, "Everyone has sucessfully teleported to you."); } @Command(hook = "tpall2") - public boolean tpall2(CommandSender sender, String player) - { - return true; - } - - @Command(hook = "tpaall") - public boolean tpaall(CommandSender sender) - { - return true; - } - - @Command(hook = "tpaall2") - public boolean tpaall2(CommandSender sender, String player) - { - return true; + public void tpall2(CommandSender sender, String player) { + Player to = Bukkit.getPlayer(player); + if (to == null) { + playerDoesNotExistError(sender, player); + return; + } + + String s = (sender instanceof Player? ((Player)sender).getDisplayName() :sender.getName()); + for (Player p : Bukkit.getOnlinePlayers()) { + p.teleport(to, TeleportCause.COMMAND); + getLogger().message(p, "&e" + s + "&7 has teleported everyone to &e" + to.getDisplayName() + "&7."); + } + getLogger().message(sender, "Everyone was sucessfully teleported to &e" + to.getDisplayName() + "&7."); } @Command(hook = "tpaccept") - public boolean tpaccept(CommandSender sender) - { - return true; + public void tpaccept(CommandSender sender) { + Player to = (Player) sender; + Player from = getLastRequestGot(to); + + if (from == null) + getLogger().message(sender, true, "You have no incoming TPA requests."); + else + teleport(to, from, pending_requests.get(to).get(from)); } @Command(hook = "tpaccept2") - public boolean tpaccept2(CommandSender sender, int index) - { - return true; + public void tpaccept2(CommandSender sender, String player) { + Player to = (Player) sender; + Player from = Bukkit.getPlayer(player); + + if (from == null) { + playerDoesNotExistError(sender, player); + return; + } + + if (from.getName().equals(sender.getName())) { + cannotTpToYourself(sender); + return; + } + + Map m = pending_requests.get(to); + + if (m == null) + getLogger().message(sender, true, "You have no incoming TPA requests."); + else if (!m.containsKey(from)) + getLogger().message(sender, true, "&e" + from.getDisplayName() + "didn't send a TPA request."); + else + teleport(to, from, m.get(from)); } - @Command(hook = "tpdeny") - public boolean tpdeny(CommandSender sender) - { - return true; - } - @Command(hook = "tpdeny2") - public boolean tpdeny2(CommandSender sender, int index) - { - return true; - } + private void teleport(Player to, Player from, TPAType type) { + switch (pending_requests.get(to).get(from)) { + case TPA: from.teleport(to, TeleportCause.COMMAND); break; + case TPAHERE: to.teleport(from, TeleportCause.COMMAND); break; + } + clearRequest(to, from); - @Command(hook = "tpacancel") - public boolean tpacancel(CommandSender sender) - { - return true; + getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &aaccepted&7 your TPA request."); + getLogger().message(to, "You've &aaccepted&7 &e" + from.getDisplayName() + "&7's TPA request."); } - @Command(hook = "tplist") - public boolean tplist(CommandSender sender) - { - return true; + @Command(hook = "tpdeny") + public void tpdeny(CommandSender sender) { + Player to = (Player) sender; + Player from = getLastRequestGot(to); + + if (from == null) { + getLogger().message(sender, true, "You have no incoming TPA requests."); + return; + } + + clearRequest(to, from); + + getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &cdenied&7 your TPA request."); + getLogger().message(to, "You've &cdenied&7 &e" + from.getDisplayName() + "&7's TPA request."); } - @Command(hook = "tptoggle") - public boolean tptoggle(CommandSender sender, String status) - { - return true; + @Command(hook = "tpdeny2") + public void tpdeny2(CommandSender sender, String player) { + Player to = (Player) sender; + Player from = Bukkit.getPlayer(player); + + if (from == null) { + playerDoesNotExistError(sender, player); + return; + } + + if (from.getName().equals(sender.getName())) { + cannotTpToYourself(sender); + return; + } + + Map m = pending_requests.get(to); + + if (m == null) + getLogger().message(sender, true, "You have no incoming TPA requests."); + + else if (!m.containsKey(from)) + getLogger().message(sender, true, "&e" + from.getDisplayName() + "&7 doesn't have an active TPA request with you."); + + else { + clearRequest(to, from); + getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &cdenied&7 your TPA request."); + getLogger().message(to, "You've &cdenied&7 &e" + from.getDisplayName() + "&7's TPA request."); + } } - @Command(hook = "tptoggle2") - public boolean tptoggle2(CommandSender sender, String command, String status) - { - return true; + @Command(hook = "tpacancel") + public void tpacancel(CommandSender sender) { + Player from = (Player) sender; + Player to = getLastRequest(from); + + if (to == null) + getLogger().message(sender, true, "You don't have outgoing TPA requests."); + else + cancel(to, from); } - @Command(hook = "tpmenu") - public boolean tpinventory(CommandSender sender) - { - return true; + @Command(hook = "tpacancel2") + public void tpacancel2(CommandSender sender, String player) { + Player from = (Player) sender; + Player to = Bukkit.getPlayer(player); + + if (to == null) + playerDoesNotExistError(sender, player); + else + cancel(to, from); } - protected void remove(TPRequest request) - { - + private void cancel(Player to, Player from) { + Stack s = last_request.get(from); + + if (s == null) + getLogger().message(from, true, "You have no outgoing TPA requests."); + + else if (!s.contains(to)) + getLogger().message(from, true, "You didn't send a TPA request to &e" + + to.getDisplayName() + "&7."); + + else { + clearRequest(to, from); + getLogger().message(to, "&e" + from.getDisplayName() + "&7 has &ccanceled&7 their request."); + getLogger().message(from, "You &ccanceled&7 your request to &e" + to.getDisplayName() + "&7."); + } } -} - -class TPRequest implements Runnable -{ - private final Teleport holder; - private final Player sender; - private final Player target; - private final Type type; - private int index; - Thread t; - - public TPRequest(Player sender, Player target, Type type, int index, Teleport holder) - { - this.sender = sender; - this.target = target; - this.type = type; - this.index = 0; - this.holder = holder; + @Command(hook = "tplist") + public void tplist(CommandSender sender) { + Player to = (Player) sender; + + Map m = pending_requests.get(to); + + if (m == null) { + getLogger().message(sender, true, "You don't have any incoming TPA requests."); + return; + } + ChatAPI.send(sender, getLogger().getHeader()); + ChatAPI.send(sender, ""); + + for (Player from : m.keySet()) { + ChatAPI.createMessage(sender) + .appendText("&e" + from.getDisplayName() + "&7: ") + .appendSendChatHover("&aAccept", "/tpaccept " + from.getName(), "&eClick to &aAccept") + .appendText("&7 or ") + .appendSendChatHover("&cDeny", "/tpdeny " + from.getName(), "&eClick to &cDeny") + .send(); + } } - public Player getSender() - { - return sender; + @Command(hook = "tptoggle") + public void tptoggle(CommandSender sender, String status) { + + switch (status.toLowerCase()) { + case "all": + DataManager.setData(sender, "allow-tpa", true); + DataManager.setData(sender, "allow-tpahere", true); + break; + case "tome": + DataManager.setData(sender, "allow-tpa", true); + DataManager.setData(sender, "allow-tpahere", false); + break; + case "tothem": + DataManager.setData(sender, "allow-tpa", false); + DataManager.setData(sender, "allow-tpahere", true); + break; + case "none": + DataManager.setData(sender, "allow-tpa", false); + DataManager.setData(sender, "allow-tpahere", false); + break; + default: + getLogger().message(sender, true, "Invalid status, &e" + status + + "&7. Available: &eAll&7, &eToMe&7, &eToThem&7, and &eNone&7. "); + return; + } + getLogger().message(sender, "Status set to &e" + status + "&7."); } - public Player getTarget() - { - return target; + private void playerDoesNotExistError(CommandSender sender, String player) { + getLogger().message(sender, true, "The player, &e" + player + "&7, is not online."); } - - public Type getType() - { - return type; + private void cannotTpToYourself(CommandSender sender) { + getLogger().message(sender, true, "You can't teleport to yourself."); } - public int getIndex() - { - return index; + private void insertIntoMaps(Player from, Player to, TPAType type) { + Map m = pending_requests.getOrDefault(to, new HashMap<>()); + m.put(from, type); + pending_requests.put(to, m); + + Stack s1 = last_request.getOrDefault(from, new Stack<>()); + s1.push(to); + last_request.put(from, s1); + + Stack s2 = last_request_got.getOrDefault(to, new Stack<>()); + s2.push(from); + last_request_got.put(to, s2); } - public void setIndex(int index) - { - this.index = index; + private void notifyAskie(Player to, Player from, TPAType type) { + ChatAPI.createMessage(to) + .appendText(getLogger().getPrefix() + "&e" + from.getDisplayName() + + "&7 has requested " + + (type == TPAType.TPA? "to teleport to you" : "you teleport to them") + + ".\nResponce: ") + .appendSendChatHover("&aAccept", "/tpaccept " + from.getName(), "&eClick to &aAccept") + .appendText("&7 or ") + .appendSendChatHover("&cDeny", "/tpdeny " + from.getName(), "&eClick to &cDeny") + .send(); } - public void execute() - { - switch (type) - { - case tpa: - sender.teleport(target); - break; - case tpahere: - target.teleport(sender); - break; - } + private Player getLastRequest(Player from) { + Stack stack = last_request.get(from); + if (stack == null) + return null; + Player toReturn = stack.peek(); + if (stack.isEmpty()) + last_request.remove(from); + else + last_request.put(from, stack); + return toReturn; } - public void abort() - { - t.interrupt(); + private Player getLastRequestGot(Player to) { + Stack stack = last_request_got.get(to); + if (stack == null) + return null; + Player toReturn = stack.peek(); + if (stack.isEmpty()) + last_request_got.remove(to); + else + last_request_got.put(to, stack); + return toReturn; } - @Override - public void run() - { - t = Thread.currentThread(); - try - { - Thread.sleep(60000); - } - catch (InterruptedException e) - { - holder.remove(this); - Message m = new Message(sender, null); - if (DataManager.getState(sender, "AFK")) - { - m.appendText(target.getDisplayName() + " is AFK and might not respond. "); - m.appendSendChat("Try again?", "/" + type.toString() + " " + target.getName()); - } - if (DataManager.getState(sender, "BUSY")) - { - m.appendText(target.getDisplayName() + " is BUSY and might not respond. "); - m.appendSendChat("Try again?", "/" + type.toString() + " " + target.getName()); - } - return; - } - holder.remove(this); + private void clearRequest(Player to, Player from) { + Stack s1 = last_request.get(from); + Stack s2 = last_request_got.get(to); + Map m = pending_requests.get(to); + + s1.remove(to); + s2.remove(from); + m.remove(from); + + if (s1.isEmpty()) + last_request.remove(from); + else + last_request.put(from, s1); + if (s2.isEmpty()) + last_request_got.remove(to); + else + last_request_got.put(to, s2); + if (m.isEmpty()) + pending_requests.remove(from); + else + pending_requests.put(from, m); } } -enum Type -{ - tpa, - tpahere; -} -- cgit v1.2.3 From 5d6e5d4264c911c7bccdf20a08b74e771dfd9cf5 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sat, 5 Jan 2019 00:59:43 -0500 Subject: Fixed bug when your old location was also valid, then you couldn't move. --- .../java/com/redstoner/modules/worldborder/WorldBorder.java | 7 +++++-- .../com/redstoner/modules/worldborder/WorldBorderInfo.java | 11 +++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/redstoner/modules/worldborder/WorldBorder.java b/src/main/java/com/redstoner/modules/worldborder/WorldBorder.java index c8da4c3..b5a1deb 100644 --- a/src/main/java/com/redstoner/modules/worldborder/WorldBorder.java +++ b/src/main/java/com/redstoner/modules/worldborder/WorldBorder.java @@ -183,11 +183,14 @@ public class WorldBorder implements Module, Listener { if (info == null || info.isCordanateWithinBounds(to.getBlockX(), to.getBlockZ())) return to; else { - System.out.println(p.isInsideVehicle()); if (p.isInsideVehicle()) p.getVehicle().remove(); ChatAPI.sendActionBar(p, message); - return from; + + if (info.isCordanateWithinBounds(from.getBlockX(), from.getBlockZ())) + return from; + else + return new Location(to.getWorld(), info.getCX(), 80, info.getCZ()); } } } diff --git a/src/main/java/com/redstoner/modules/worldborder/WorldBorderInfo.java b/src/main/java/com/redstoner/modules/worldborder/WorldBorderInfo.java index 7ff4430..fa7502e 100644 --- a/src/main/java/com/redstoner/modules/worldborder/WorldBorderInfo.java +++ b/src/main/java/com/redstoner/modules/worldborder/WorldBorderInfo.java @@ -23,6 +23,14 @@ public class WorldBorderInfo { return x > minX && x < maxX && z > minZ && z < maxZ; } + public int getCX() { + return cx; + } + + public int getCZ() { + return cz; + } + public String getMessage() { return message; } @@ -41,6 +49,5 @@ public class WorldBorderInfo { public static WorldBorderInfo fromJSONObject(JSONObject j) { return new WorldBorderInfo(((Long)j.get("cx")).intValue(), ((Long)j.get("cz")).intValue(), ((Long)j.get("r")).intValue()); - } - + } } -- cgit v1.2.3 From 1f0ea14a52b6e36bbe1b46a5898b0f3934a1e421 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sat, 5 Jan 2019 01:05:55 -0500 Subject: Added more help clauses to teleport commands --- src/main/java/com/redstoner/modules/teleport/Teleport.cmd | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.cmd b/src/main/java/com/redstoner/modules/teleport/Teleport.cmd index 9a4a72d..ca78ab5 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.cmd +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.cmd @@ -4,21 +4,25 @@ command tp { [string:player] { run tp player; + help Teleports you to a player.; perm utils.teleport.tpa; type player; } [string:player] [string:player2] { run tp2 player player2; + help Teleports the first player to the second.; perm utils.teleport.tpa; } [int:x] [int:y] [int:z] { run tploc x y z; + help Teleports you to specific coords.; perm utils.teleport.tploc; type player; } [string:player] [int:x] [int:y] [int:z] { run tploc2 player x y z; + help Teleports a player to specific coords.; perm utils.teleport.tploc.other; } } @@ -31,6 +35,7 @@ command tphere { [string:player] { run tphere player; + help Teleports the player to you.; perm utils.teleport.tp.here; } } @@ -44,6 +49,7 @@ command tpa { [string:player] { run tpa player; + help Request to teleport to a player.; } } @@ -57,6 +63,7 @@ command tpahere { [string:player] { run tpahere player; + help Request a player to teleport to you,; help ask another player to teleport to you.; } } @@ -112,9 +119,11 @@ command tpdeny { [empty] { run tpdeny; + help Denies the latest pending tpa request.; } [string:player] { run tpdeny2 player; + help Denies the specified pending tpa request.; } } @@ -127,6 +136,7 @@ command tplist { [empty] { run tplist; + help Shows you a list of all the incoming tpa requests.; } } -- cgit v1.2.3 From a45fd051db87279c7c3d04a23e891077bab4b8ac Mon Sep 17 00:00:00 2001 From: Minenash Date: Sat, 5 Jan 2019 01:19:13 -0500 Subject: Made it so tpa request from a player are purged when they quit the game --- .../com/redstoner/modules/teleport/Teleport.java | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index 8eb4b76..b43d820 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -8,9 +8,13 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.misc.CommandHolderType; @@ -20,8 +24,9 @@ import com.redstoner.modules.datamanager.DataManager; import net.nemez.chatapi.ChatAPI; @Commands(CommandHolderType.File) +@AutoRegisterListener @Version(major = 5, minor = 0, revision = 0, compatible = 4) -public class Teleport implements Module +public class Teleport implements Module, Listener { public static final String PERMISSION_TELEPORT = "utils.teleport.tp"; public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other"; @@ -447,5 +452,39 @@ public class Teleport implements Module else pending_requests.put(from, m); } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + Player p = event.getPlayer(); + + pending_requests.remove(p); + last_request.remove(p); + last_request_got.remove(p); + + for (Player fl : pending_requests.keySet()) { + Map m = pending_requests.get(fl); + m.remove(p); + if (m.isEmpty()) + pending_requests.remove(fl); + else + pending_requests.put(fl, m); + } + for (Player fl : last_request.keySet()) { + Stack s = last_request.get(fl); + s.remove(p); + if (s.isEmpty()) + last_request.remove(fl); + else + last_request.put(fl, s); + } + for (Player fl : last_request_got.keySet()) { + Stack s = last_request_got.get(fl); + s.remove(p); + if (s.isEmpty()) + last_request_got.remove(fl); + else + last_request_got.put(fl, s); + } + } } -- cgit v1.2.3