Finished Teleport Module
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package com.redstoner.modules.teleport;
|
||||
|
||||
public enum TPAType {
|
||||
TPA, TPAHERE
|
||||
}
|
||||
@@ -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).;
|
||||
}
|
||||
}
|
||||
@@ -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 static final String PERMISSION_TELEPORT = "utils.teleport.tp";
|
||||
public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other";
|
||||
|
||||
public ArrayList<TPRequest> pending_requests;
|
||||
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<>();
|
||||
|
||||
@Override
|
||||
public void postEnable()
|
||||
{
|
||||
pending_requests = new ArrayList<TPRequest>();
|
||||
@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.");
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
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;
|
||||
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(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<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));
|
||||
}
|
||||
|
||||
|
||||
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 = "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);
|
||||
}
|
||||
|
||||
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 = "tplist")
|
||||
public boolean tplist(CommandSender sender)
|
||||
{
|
||||
return true;
|
||||
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 = "tptoggle")
|
||||
public boolean tptoggle(CommandSender sender, String status)
|
||||
{
|
||||
return true;
|
||||
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.");
|
||||
}
|
||||
|
||||
@Command(hook = "tptoggle2")
|
||||
public boolean tptoggle2(CommandSender sender, String command, String status)
|
||||
{
|
||||
return true;
|
||||
private void playerDoesNotExistError(CommandSender sender, String player) {
|
||||
getLogger().message(sender, true, "The player, &e" + player + "&7, is not online.");
|
||||
}
|
||||
private void cannotTpToYourself(CommandSender sender) {
|
||||
getLogger().message(sender, true, "You can't teleport to yourself.");
|
||||
}
|
||||
|
||||
@Command(hook = "tpmenu")
|
||||
public boolean tpinventory(CommandSender sender)
|
||||
{
|
||||
return true;
|
||||
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);
|
||||
}
|
||||
|
||||
protected void remove(TPRequest request)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public Player getSender()
|
||||
{
|
||||
return sender;
|
||||
}
|
||||
|
||||
public Player getTarget()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
public Type getType()
|
||||
{
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getIndex()
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
public void setIndex(int index)
|
||||
{
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public void execute()
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case tpa:
|
||||
sender.teleport(target);
|
||||
break;
|
||||
case tpahere:
|
||||
target.teleport(sender);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void abort()
|
||||
{
|
||||
t.interrupt();
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
enum Type
|
||||
{
|
||||
tpa,
|
||||
tpahere;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user