summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinenash <minenash@protonmail.com>2019-01-30 16:28:15 -0500
committerMinenash <minenash@protonmail.com>2019-01-30 16:28:15 -0500
commitdaf1dc2e62b245cbadec399c46ffe5da6a61fbe1 (patch)
tree97b4d675a27a47a7f4363468b6d54fd2acc0e7f3
parentbd4b7f3bdd0f097340172c1f50a430a7f843c174 (diff)
Added the ability to change the AFK reason and to ignore movement.
-rw-r--r--src/main/java/com/redstoner/modules/afk/AFK.cmd8
-rw-r--r--src/main/java/com/redstoner/modules/afk/AFK.java54
-rw-r--r--src/main/java/com/redstoner/modules/afk/AFKListener.java9
-rw-r--r--src/main/java/com/redstoner/modules/afk/AFKUtil.java13
4 files changed, 78 insertions, 6 deletions
diff --git a/src/main/java/com/redstoner/modules/afk/AFK.cmd b/src/main/java/com/redstoner/modules/afk/AFK.cmd
index 6353e33..c9921e5 100644
--- a/src/main/java/com/redstoner/modules/afk/AFK.cmd
+++ b/src/main/java/com/redstoner/modules/afk/AFK.cmd
@@ -13,6 +13,14 @@ command afk {
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...] {
run afkreason -s reason;
}
diff --git a/src/main/java/com/redstoner/modules/afk/AFK.java b/src/main/java/com/redstoner/modules/afk/AFK.java
index ee96137..905811d 100644
--- a/src/main/java/com/redstoner/modules/afk/AFK.java
+++ b/src/main/java/com/redstoner/modules/afk/AFK.java
@@ -63,11 +63,59 @@ public class AFK implements Module {
return afk(sender, silent, "");
}
+ @Command(hook = "afkignore")
+ public boolean afk(CommandSender sender, boolean silent, boolean ignoreMovement) {
+ return afk(sender, silent, ignoreMovement, "");
+ }
+
@Command(hook = "afkreason")
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);
- } 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_reason", reason);
DataManager.setState(sender, "afk_silent", silent);
@@ -78,7 +126,7 @@ public class AFK implements Module {
return true;
}
-
+
private boolean getListenSetting(String name, String def) {
return DataManager.getConfigOrDefault(name, def).equals("listen");
}
diff --git a/src/main/java/com/redstoner/modules/afk/AFKListener.java b/src/main/java/com/redstoner/modules/afk/AFKListener.java
index fab0b5e..a4b4154 100644
--- a/src/main/java/com/redstoner/modules/afk/AFKListener.java
+++ b/src/main/java/com/redstoner/modules/afk/AFKListener.java
@@ -1,6 +1,8 @@
package com.redstoner.modules.afk;
import com.redstoner.misc.Utils;
+
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.*;
@@ -33,12 +35,17 @@ public class AFKListener implements Listener {
@EventHandler
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());
boolean moved = distance > 0;
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
diff --git a/src/main/java/com/redstoner/modules/afk/AFKUtil.java b/src/main/java/com/redstoner/modules/afk/AFKUtil.java
index 3746632..22f4284 100644
--- a/src/main/java/com/redstoner/modules/afk/AFKUtil.java
+++ b/src/main/java/com/redstoner/modules/afk/AFKUtil.java
@@ -8,10 +8,15 @@ import org.bukkit.entity.Player;
public class AFKUtil {
protected static void unAfk(CommandSender sender, boolean silent) {
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);
}
+ protected static void unAfk(CommandSender sender) {
+ unAfk(sender, isSilent(sender));
+ }
+
protected static boolean isAfk(CommandSender sender) {
return DataManager.getState(sender, "afk");
}
@@ -23,7 +28,11 @@ public class AFKUtil {
protected static boolean isSilent(CommandSender sender) {
return DataManager.getState(sender, "afk_silent");
}
-
+
+ protected static boolean isIgnoringMovement(CommandSender sender) {
+ return DataManager.getState(sender, "afk_ignoreMovement");
+ }
+
protected static void checkedUnAfk(Player player) {
if (isAfk(player) && !isVanished(player)) unAfk(player, isSilent(player));
}