mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 10:14:43 +02:00
Implementing ptp request timeouts.
Also fix and improve a few things as suggested by bm01
This commit is contained in:
@ -100,6 +100,8 @@ public class Config extends ConfigLoader {
|
||||
public boolean getCommandPartyChatPEnabled() { return config.getBoolean("Commands.p.Enabled", true); }
|
||||
|
||||
public int getPTPCommandCooldown() { return config.getInt("Commands.ptp.Cooldown", 30); }
|
||||
public int getPTPCommandTimeout() { return config.getInt("Commands.ptp.Request_Timeout", 300); }
|
||||
public boolean getPTPCommandConfirmRequired() { return config.getBoolean("Commands.ptp.Confirm_Required", true); }
|
||||
public boolean getDonateMessageEnabled() { return config.getBoolean("Commands.mcmmo.Donate_Message", true); }
|
||||
|
||||
/* Items */
|
||||
|
@ -7,6 +7,8 @@ import java.io.FileWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.database.Database;
|
||||
@ -31,8 +33,9 @@ public class PlayerProfile {
|
||||
/* Party Stuff */
|
||||
private Party party;
|
||||
private Party invite;
|
||||
private String ptpRequest;
|
||||
private Player ptpRequest;
|
||||
private boolean ptpEnabled = true;
|
||||
private boolean ptpConfirmRequired = Config.getInstance().getPTPCommandConfirmRequired();
|
||||
|
||||
/* Toggles */
|
||||
private boolean loaded;
|
||||
@ -52,6 +55,7 @@ public class PlayerProfile {
|
||||
private long recentlyHurt;
|
||||
private int respawnATS;
|
||||
private long lastSave = 0L;
|
||||
private long ptpTimeout;
|
||||
|
||||
/* mySQL STUFF */
|
||||
private int userId;
|
||||
@ -1245,6 +1249,10 @@ public class PlayerProfile {
|
||||
invite = null;
|
||||
}
|
||||
|
||||
/*
|
||||
* Party Teleportation
|
||||
*/
|
||||
|
||||
public boolean getPtpEnabled() {
|
||||
return ptpEnabled;
|
||||
}
|
||||
@ -1253,11 +1261,11 @@ public class PlayerProfile {
|
||||
ptpEnabled = !ptpEnabled;
|
||||
}
|
||||
|
||||
public void setPtpRequest(String ptpRequest) {
|
||||
public void setPtpRequest(Player ptpRequest) {
|
||||
this.ptpRequest = ptpRequest;
|
||||
}
|
||||
|
||||
public String getPtpRequest() {
|
||||
public Player getPtpRequest() {
|
||||
return ptpRequest;
|
||||
}
|
||||
|
||||
@ -1272,4 +1280,20 @@ public class PlayerProfile {
|
||||
public void removePtpRequest() {
|
||||
ptpRequest = null;
|
||||
}
|
||||
|
||||
public boolean getPtpConfirmRequired() {
|
||||
return ptpConfirmRequired;
|
||||
}
|
||||
|
||||
public void togglePtpConfirmRequired() {
|
||||
ptpConfirmRequired = !ptpConfirmRequired;
|
||||
}
|
||||
|
||||
public long getPtpTimeout() {
|
||||
return ptpTimeout;
|
||||
}
|
||||
|
||||
public void actualizePtpTimeout() {
|
||||
ptpTimeout = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
|
||||
}
|
||||
}
|
||||
|
@ -44,8 +44,8 @@ public class PtpCommand implements CommandExecutor {
|
||||
if (args[0].equalsIgnoreCase("toggle")) {
|
||||
return togglePartyTeleportation();
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("deny")) {
|
||||
return denyTeleportRequest();
|
||||
else if (args[0].equalsIgnoreCase("acceptany") || args[0].equalsIgnoreCase("acceptall")) {
|
||||
return acceptAnyTeleportRequest();
|
||||
}
|
||||
|
||||
int ptpCooldown = Config.getInstance().getPTPCommandCooldown();
|
||||
@ -67,8 +67,8 @@ public class PtpCommand implements CommandExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendTeleportRequest(String targetName) {
|
||||
Player target = plugin.getServer().getPlayer(targetName);
|
||||
private boolean sendTeleportRequest(String args) {
|
||||
Player target = plugin.getServer().getPlayer(args);
|
||||
|
||||
if (player.equals(target)) {
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Self"));
|
||||
@ -88,15 +88,31 @@ public class PtpCommand implements CommandExecutor {
|
||||
if (PartyManager.inSameParty(player, target)) {
|
||||
PlayerProfile targetProfile = Users.getProfile(target);
|
||||
|
||||
if (targetProfile.getPtpEnabled()) {
|
||||
String senderName = player.getName();
|
||||
|
||||
targetProfile.setPtpRequest(senderName);
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
|
||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request", new Object[] {senderName}));
|
||||
}
|
||||
else {
|
||||
if (!targetProfile.getPtpEnabled()) {
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Disabled", new Object[] { target.getName() }));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!Users.getProfile(target).getPtpConfirmRequired()) {
|
||||
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, playerProfile.getParty().getName());
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
player.teleport(target);
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", new Object[] { player.getName() }));
|
||||
target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", new Object[] { target.getName() }));
|
||||
playerProfile.setRecentlyHurt(System.currentTimeMillis());
|
||||
} else {
|
||||
targetProfile.setPtpRequest(player);
|
||||
targetProfile.actualizePtpTimeout();
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
|
||||
|
||||
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
|
||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", new Object[] { player.getName() }));
|
||||
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", new Object[] { ptpRequestExpire }));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -106,42 +122,54 @@ public class PtpCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
private boolean acceptTeleportRequest() {
|
||||
if (playerProfile.hasPtpRequest()) {
|
||||
Player target = plugin.getServer().getPlayer(playerProfile.getPtpRequest());
|
||||
|
||||
if (Users.getProfile(target).getPtpEnabled()) {
|
||||
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, playerProfile.getParty().getName());
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
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() }));
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!playerProfile.hasPtpRequest()) {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
|
||||
return true;
|
||||
}
|
||||
|
||||
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
|
||||
|
||||
if ((playerProfile.getPtpTimeout() + ptpRequestExpire) * Misc.TIME_CONVERSION_FACTOR < System.currentTimeMillis()) {
|
||||
playerProfile.removePtpRequest();
|
||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.RequestExpired"));
|
||||
return true;
|
||||
}
|
||||
|
||||
Player target = playerProfile.getPtpRequest();
|
||||
|
||||
if (target == null) {
|
||||
player.sendMessage(LocaleLoader.getString("Party.Player.Invalid"));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (target.isDead()) {
|
||||
player.sendMessage(LocaleLoader.getString("Party.Teleport.Dead"));
|
||||
return true;
|
||||
}
|
||||
|
||||
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, playerProfile.getParty().getName());
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
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());
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean denyTeleportRequest() {
|
||||
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();
|
||||
private boolean acceptAnyTeleportRequest() {
|
||||
if (playerProfile.getPtpConfirmRequired()) {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Disabled"));
|
||||
}
|
||||
else {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.NoRequests"));
|
||||
player.sendMessage(LocaleLoader.getString("Commands.ptp.AcceptAny.Enabled"));
|
||||
}
|
||||
|
||||
playerProfile.togglePtpConfirmRequired();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user