summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinenash <minenash@protonmail.com>2019-01-05 01:23:45 -0500
committerGitHub <noreply@github.com>2019-01-05 01:23:45 -0500
commite123e392837b7fe6b0723dab5fe74bb14da408f3 (patch)
treea2882236d346a13fd46607ba7e3d5fccaaa9c23e
parent973e873716e58e8af80d7ea0ecd86df09f113912 (diff)
parenta45fd051db87279c7c3d04a23e891077bab4b8ac (diff)
Merge pull request #36 from RedstonerServer/gradle
Finished Teleport Module and Fixed a bug in the WorldBorder Module
-rw-r--r--src/main/java/com/redstoner/modules/teleport/TPAType.java5
-rw-r--r--src/main/java/com/redstoner/modules/teleport/Teleport.cmd124
-rw-r--r--src/main/java/com/redstoner/modules/teleport/Teleport.java578
-rw-r--r--src/main/java/com/redstoner/modules/worldborder/WorldBorder.java7
-rw-r--r--src/main/java/com/redstoner/modules/worldborder/WorldBorderInfo.java11
5 files changed, 486 insertions, 239 deletions
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..ca78ab5 100644
--- a/src/main/java/com/redstoner/modules/teleport/Teleport.cmd
+++ b/src/main/java/com/redstoner/modules/teleport/Teleport.cmd
@@ -1,71 +1,80 @@
-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;
+ help Teleports you to a player.;
+ perm utils.teleport.tpa;
+ type player;
}
[string:player] [string:player2] {
run tp2 player player2;
- perm utils.teleport.tp.other;
+ 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;
}
}
-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;
+ help Teleports the player to you.;
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;
+ help Request to teleport to a 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 Request a player to teleport to you,;
help ask another player to teleport to you.;
}
}
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 +82,48 @@ 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;
+ help Denies the latest pending tpa request.;
}
- [int:index] {
- run tpdeny2 index;
+ [string:player] {
+ run tpdeny2 player;
+ help Denies the specified pending tpa request.;
}
}
@@ -128,20 +132,20 @@ command tplist {
alias tpl;
alias etpl;
perm utils.teleport.request;
+ type player;
+
[empty] {
run tplist;
+ help Shows you a list of all the incoming tpa requests.;
}
}
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..b43d820 100644
--- a/src/main/java/com/redstoner/modules/teleport/Teleport.java
+++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java
@@ -1,262 +1,490 @@
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.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;
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)
+@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.admin.teleport";
-
- public ArrayList<TPRequest> pending_requests;
+ public static final String PERMISSION_TELEPORT = "utils.teleport.tp";
+ public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other";
+
+ private Map<Player, Map<Player, TPAType>> pending_requests = new HashMap<>();
+ private Map<Player, Stack<Player>> last_request = new HashMap<>();
+ private Map<Player, Stack<Player>> 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<TPRequest>();
+ @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;
+ 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 = "tpaall")
- public boolean tpaall(CommandSender sender)
- {
- return true;
+ @Command(hook = "tpaccept")
+ 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 = "tpaall2")
- public boolean tpaall2(CommandSender sender, String player)
- {
- return true;
+ @Command(hook = "tpaccept2")
+ 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<Player, TPAType> 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 = "tpaccept")
- public boolean tpaccept(CommandSender sender)
- {
- return true;
- }
- @Command(hook = "tpaccept2")
- public boolean tpaccept2(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);
+
+ 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 = "tpdeny")
- public boolean tpdeny(CommandSender sender)
- {
- return true;
+ 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 = "tpdeny2")
- public boolean tpdeny2(CommandSender sender, int index)
- {
- return true;
+ 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<Player, TPAType> 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 = "tpacancel")
- public boolean tpacancel(CommandSender sender)
- {
- return true;
+ 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 = "tplist")
- public boolean tplist(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);
}
- @Command(hook = "tptoggle")
- public boolean tptoggle(CommandSender sender, String status)
- {
- return true;
+ private void cancel(Player to, Player from) {
+ Stack<Player> 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.");
+ }
}
- @Command(hook = "tptoggle2")
- public boolean tptoggle2(CommandSender sender, String command, String status)
- {
- return true;
+ @Command(hook = "tplist")
+ public void tplist(CommandSender sender) {
+ Player to = (Player) sender;
+
+ Map<Player,TPAType> 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();
+ }
}
- @Command(hook = "tpmenu")
- public boolean tpinventory(CommandSender sender)
- {
- return true;
+ @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.");
}
- protected void remove(TPRequest request)
- {
-
+ private void playerDoesNotExistError(CommandSender sender, String player) {
+ getLogger().message(sender, true, "The player, &e" + player + "&7, is not online.");
}
-}
-
-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;
+ private void cannotTpToYourself(CommandSender sender) {
+ getLogger().message(sender, true, "You can't teleport to yourself.");
}
- public Player getSender()
- {
- return sender;
+ private void insertIntoMaps(Player from, Player to, TPAType type) {
+ Map<Player, TPAType> m = pending_requests.getOrDefault(to, new HashMap<>());
+ m.put(from, type);
+ pending_requests.put(to, m);
+
+ Stack<Player> s1 = last_request.getOrDefault(from, new Stack<>());
+ s1.push(to);
+ last_request.put(from, s1);
+
+ Stack<Player> s2 = last_request_got.getOrDefault(to, new Stack<>());
+ s2.push(from);
+ last_request_got.put(to, s2);
}
- public Player getTarget()
- {
- return target;
+ 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 Type getType()
- {
- return type;
+ private Player getLastRequest(Player from) {
+ Stack<Player> 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 int getIndex()
- {
- return index;
+ private Player getLastRequestGot(Player to) {
+ Stack<Player> 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;
}
- public void setIndex(int index)
- {
- this.index = index;
+ private void clearRequest(Player to, Player from) {
+ Stack<Player> s1 = last_request.get(from);
+ Stack<Player> s2 = last_request_got.get(to);
+ Map<Player, TPAType> 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);
}
- public void execute()
- {
- switch (type)
- {
- case tpa:
- sender.teleport(target);
- break;
- case tpahere:
- target.teleport(sender);
- break;
+ @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<Player, TPAType> m = pending_requests.get(fl);
+ m.remove(p);
+ if (m.isEmpty())
+ pending_requests.remove(fl);
+ else
+ pending_requests.put(fl, m);
}
- }
-
- public void abort()
- {
- t.interrupt();
- }
-
- @Override
- public void run()
- {
- t = Thread.currentThread();
- try
- {
- Thread.sleep(60000);
+ for (Player fl : last_request.keySet()) {
+ Stack<Player> s = last_request.get(fl);
+ s.remove(p);
+ if (s.isEmpty())
+ last_request.remove(fl);
+ else
+ last_request.put(fl, s);
}
- 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;
+ for (Player fl : last_request_got.keySet()) {
+ Stack<Player> s = last_request_got.get(fl);
+ s.remove(p);
+ if (s.isEmpty())
+ last_request_got.remove(fl);
+ else
+ last_request_got.put(fl, s);
}
- holder.remove(this);
}
}
-enum Type
-{
- tpa,
- tpahere;
-}
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());
- }
-
+ }
}