162 lines
6.2 KiB
Java
Raw Normal View History

package com.gmail.nossr50.party.commands;
2012-01-09 11:00:13 -08:00
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import com.gmail.nossr50.mcMMO;
2012-04-22 19:34:34 -04:00
import com.gmail.nossr50.commands.CommandHelper;
2012-04-26 07:27:57 -07:00
import com.gmail.nossr50.config.Config;
2012-01-09 11:00:13 -08:00
import com.gmail.nossr50.datatypes.PlayerProfile;
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
2012-04-27 02:47:11 -07:00
import com.gmail.nossr50.locale.LocaleLoader;
2012-06-08 23:48:41 +02:00
import com.gmail.nossr50.party.PartyManager;
2013-01-16 18:09:02 -05:00
import com.gmail.nossr50.util.Misc;
2012-04-27 02:47:11 -07:00
import com.gmail.nossr50.util.Users;
2012-01-09 11:00:13 -08:00
public class PtpCommand implements CommandExecutor {
private final mcMMO plugin;
2012-04-22 19:34:34 -04:00
public PtpCommand(mcMMO instance) {
2012-04-22 19:34:34 -04:00
this.plugin = instance;
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
2013-01-16 18:09:02 -05:00
String usage = LocaleLoader.getString("Commands.Usage.1", new Object[] {"ptp", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"});
2012-04-22 19:34:34 -04:00
if (CommandHelper.noConsoleUsage(sender)) {
return true;
}
if (CommandHelper.noCommandPermissions(sender, "mcmmo.commands.ptp")) {
return true;
}
switch (args.length) {
case 1:
Player player = (Player) sender;
2012-07-03 10:04:04 -04:00
PlayerProfile profile = Users.getProfile(player);
2012-04-22 19:34:34 -04:00
2013-01-27 23:35:46 +01:00
if (args[0].equalsIgnoreCase("toggle")) {
return togglePartyTeleportation(sender, args);
}
else if (args[0].equalsIgnoreCase("deny")) {
return denyTeleportRequest(sender, args);
2013-01-27 23:35:46 +01:00
}
2013-01-16 18:09:02 -05:00
if (profile.getRecentlyHurt() + (Config.getInstance().getPTPCommandCooldown() * Misc.TIME_CONVERSION_FACTOR) > System.currentTimeMillis()) {
2012-04-27 02:47:11 -07:00
player.sendMessage(LocaleLoader.getString("Party.Teleport.Hurt", new Object[] { Config.getInstance().getPTPCommandCooldown() }));
2012-04-22 19:34:34 -04:00
return true;
}
if (args[0].equalsIgnoreCase("accept")) {
return acceptTeleportRequest(sender, args);
}
else {
return sendTeleportRequest(sender, args);
2012-04-22 19:34:34 -04:00
}
default:
sender.sendMessage(usage);
return true;
}
}
private boolean sendTeleportRequest(CommandSender sender, String[] args) {
Player player = (Player) sender;
Player target = plugin.getServer().getPlayer(args[0]);
if (player.equals(target)) {
player.sendMessage(LocaleLoader.getString("Party.Teleport.Self"));
return true;
}
if (target == null) {
player.sendMessage(LocaleLoader.getString("Party.Player.Invalid"));
return true;
}
if (target.isDead()) {
player.sendMessage(LocaleLoader.getString("Party.Teleport.Dead"));
return true;
}
if (PartyManager.inSameParty(player, target)) {
if (Users.getProfile(target).getPtpEnabled()) {
Users.getProfile(target).setPtpRequest(player.getName());
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request", new Object[] {player.getName()}));
2012-04-22 19:34:34 -04:00
return true;
}else {
player.sendMessage(LocaleLoader.getString("Party.Teleport.Disabled", new Object[] { target.getName() }));
2012-04-22 19:34:34 -04:00
}
} else {
player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", new Object[] { target.getName() }));
}
return true;
}
private boolean acceptTeleportRequest(CommandSender sender, String[] args) {
Player player = (Player) sender;
PlayerProfile playerProfile = Users.getProfile(player);
if (playerProfile.hasPtpRequest()) {
Player target = plugin.getServer().getPlayer(playerProfile.getPtpRequest());
2012-04-22 19:34:34 -04:00
if (Users.getProfile(target).getPtpEnabled()) {
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, playerProfile.getParty().getName());
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return true;
2012-04-22 19:34:34 -04:00
}
target.teleport(player);
target.sendMessage(LocaleLoader.getString("Party.Teleport.Player", new Object[] { player.getName() }));
player.sendMessage(LocaleLoader.getString("Party.Teleport.Target", new Object[] { target.getName() }));
playerProfile.setRecentlyHurt(System.currentTimeMillis());
} else {
player.sendMessage(LocaleLoader.getString("Party.Teleport.Disabled", new Object[] { target.getName() }));
2012-04-22 19:34:34 -04:00
}
}
else {
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
}
return true;
}
2012-04-22 19:34:34 -04:00
private boolean denyTeleportRequest(CommandSender sender, String[] args) {
Player player = (Player) sender;
PlayerProfile playerProfile = Users.getProfile(player);
2012-04-22 19:34:34 -04:00
if (playerProfile.hasPtpRequest()) {
Player target = plugin.getServer().getPlayer(playerProfile.getPtpRequest());
player.sendMessage(LocaleLoader.getString("Commands.ptp.Deny"));
target.sendMessage(LocaleLoader.getString("Commands.ptp.Denied", new Object[] { player.getName() }));
playerProfile.removePtpRequest();
2012-04-22 19:34:34 -04:00
}
else {
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
}
return true;
2012-12-24 16:56:25 -05:00
}
2013-01-27 23:35:46 +01:00
private boolean togglePartyTeleportation(CommandSender sender, String[] args) {
2013-01-27 23:35:46 +01:00
Player player = (Player) sender;
PlayerProfile profile = Users.getProfile(player);
if (profile.getPtpEnabled()) {
sender.sendMessage(LocaleLoader.getString("Commands.ptp.Disabled"));
}
else {
sender.sendMessage(LocaleLoader.getString("Commands.ptp.Enabled"));
}
profile.togglePtpUse();
return true;
}
}