Added the ability to change the AFK reason and to ignore movement.
This commit is contained in:
@@ -13,6 +13,14 @@ command afk {
|
|||||||
run afksilent -s;
|
run afksilent -s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[optional:-s] [bool:ignoreMovement] {
|
||||||
|
run afkignore -s ignoreMovement;
|
||||||
|
}
|
||||||
|
|
||||||
|
[optional:-s] [bool:ignoreMovement] [string:reason...] {
|
||||||
|
run afkfull -s ignoreMovement reason;
|
||||||
|
}
|
||||||
|
|
||||||
[optional:-s] [string:reason...] {
|
[optional:-s] [string:reason...] {
|
||||||
run afkreason -s reason;
|
run afkreason -s reason;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,11 +63,59 @@ public class AFK implements Module {
|
|||||||
return afk(sender, silent, "");
|
return afk(sender, silent, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Command(hook = "afkignore")
|
||||||
|
public boolean afk(CommandSender sender, boolean silent, boolean ignoreMovement) {
|
||||||
|
return afk(sender, silent, ignoreMovement, "");
|
||||||
|
}
|
||||||
|
|
||||||
@Command(hook = "afkreason")
|
@Command(hook = "afkreason")
|
||||||
public boolean afk(CommandSender sender, boolean silent, String reason) {
|
public boolean afk(CommandSender sender, boolean silent, String reason) {
|
||||||
if (AFKUtil.isAfk(sender)) {
|
if (silent == false && reason.equals("help"))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// String reasonLower = reason.toLowerCase();
|
||||||
|
// if (reasonLower.startsWith("true "))
|
||||||
|
// return afk(sender, silent, true, reason.substring(5));
|
||||||
|
// else if (reasonLower.startsWith("false "))
|
||||||
|
// return afk(sender, silent, false, reason);
|
||||||
|
// else
|
||||||
|
return afkmain(sender, silent, reason, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Command(hook = "afkfull")
|
||||||
|
public boolean afk(CommandSender sender, boolean silent, boolean ignoreMovement, String reason) {
|
||||||
|
boolean oldIgnoringMovement = AFKUtil.isIgnoringMovement(sender);
|
||||||
|
System.out.println("Am I stupid");
|
||||||
|
DataManager.setState(sender, "afk_ignoreMovement", ignoreMovement);
|
||||||
|
|
||||||
|
if (AFKUtil.isAfk(sender) && oldIgnoringMovement != ignoreMovement) {
|
||||||
|
if (ignoreMovement)
|
||||||
|
getLogger().message(sender, "Your movements will now be ignored.");
|
||||||
|
else
|
||||||
|
getLogger().message(sender, "Your movements will no longer be ignored.");
|
||||||
|
return afkmain(sender, silent, reason, true);
|
||||||
|
}
|
||||||
|
else if (AFKUtil.isAfk(sender)) {
|
||||||
|
if (ignoreMovement)
|
||||||
|
getLogger().message(sender, "Your movements will still be ignored.");
|
||||||
|
else
|
||||||
|
getLogger().message(sender, "Your movements will still not be ignored.");
|
||||||
|
return afkmain(sender, silent, reason, true);
|
||||||
|
}
|
||||||
|
return afkmain(sender, silent, reason, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean afkmain(CommandSender sender, boolean silent, String reason, boolean keepAFK) {
|
||||||
|
boolean isAFK = AFKUtil.isAfk(sender);
|
||||||
|
|
||||||
|
if ( isAFK && reason.equals("") && !keepAFK)
|
||||||
AFKUtil.unAfk(sender, silent);
|
AFKUtil.unAfk(sender, silent);
|
||||||
} else {
|
|
||||||
|
else if (isAFK && !reason.equals("")) {
|
||||||
|
DataManager.setData(sender, "afk_reason", reason);
|
||||||
|
getLogger().message(sender, "Your reason has been updated.");
|
||||||
|
}
|
||||||
|
else if (!keepAFK) {
|
||||||
DataManager.setData(sender, "afk_time", System.currentTimeMillis());
|
DataManager.setData(sender, "afk_time", System.currentTimeMillis());
|
||||||
DataManager.setData(sender, "afk_reason", reason);
|
DataManager.setData(sender, "afk_reason", reason);
|
||||||
DataManager.setState(sender, "afk_silent", silent);
|
DataManager.setState(sender, "afk_silent", silent);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.redstoner.modules.afk;
|
package com.redstoner.modules.afk;
|
||||||
|
|
||||||
import com.redstoner.misc.Utils;
|
import com.redstoner.misc.Utils;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.*;
|
import org.bukkit.event.player.*;
|
||||||
@@ -33,12 +35,17 @@ public class AFKListener implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onMove(PlayerMoveEvent event) {
|
public void onMove(PlayerMoveEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (!AFKUtil.isAfk(player) || AFKUtil.isVanished(player) || AFKUtil.isIgnoringMovement(player))
|
||||||
|
return;
|
||||||
|
|
||||||
double distance = event.getFrom().distance(event.getTo());
|
double distance = event.getFrom().distance(event.getTo());
|
||||||
|
|
||||||
boolean moved = distance > 0;
|
boolean moved = distance > 0;
|
||||||
boolean looked = (event.getFrom().getPitch() != event.getTo().getPitch()) || (event.getFrom().getYaw() != event.getTo().getYaw());
|
boolean looked = (event.getFrom().getPitch() != event.getTo().getPitch()) || (event.getFrom().getYaw() != event.getTo().getYaw());
|
||||||
|
|
||||||
if ((move && moved) || (look && looked)) AFKUtil.checkedUnAfk(event.getPlayer());
|
if ((move && moved) || (look && looked)) AFKUtil.unAfk(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|||||||
@@ -8,10 +8,15 @@ import org.bukkit.entity.Player;
|
|||||||
public class AFKUtil {
|
public class AFKUtil {
|
||||||
protected static void unAfk(CommandSender sender, boolean silent) {
|
protected static void unAfk(CommandSender sender, boolean silent) {
|
||||||
DataManager.setState(sender, "afk", false);
|
DataManager.setState(sender, "afk", false);
|
||||||
|
DataManager.setState(sender, "afk_ignoreMovement", false);
|
||||||
|
|
||||||
if (!silent) Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", null);
|
if (!silent) Utils.broadcast("§7 * ", Utils.getName(sender) + "§7 is no longer AFK", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void unAfk(CommandSender sender) {
|
||||||
|
unAfk(sender, isSilent(sender));
|
||||||
|
}
|
||||||
|
|
||||||
protected static boolean isAfk(CommandSender sender) {
|
protected static boolean isAfk(CommandSender sender) {
|
||||||
return DataManager.getState(sender, "afk");
|
return DataManager.getState(sender, "afk");
|
||||||
}
|
}
|
||||||
@@ -24,6 +29,10 @@ public class AFKUtil {
|
|||||||
return DataManager.getState(sender, "afk_silent");
|
return DataManager.getState(sender, "afk_silent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static boolean isIgnoringMovement(CommandSender sender) {
|
||||||
|
return DataManager.getState(sender, "afk_ignoreMovement");
|
||||||
|
}
|
||||||
|
|
||||||
protected static void checkedUnAfk(Player player) {
|
protected static void checkedUnAfk(Player player) {
|
||||||
if (isAfk(player) && !isVanished(player)) unAfk(player, isSilent(player));
|
if (isAfk(player) && !isVanished(player)) unAfk(player, isSilent(player));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user