From 4a21cb3d334fc2958852beb3a02d1c4fb04a8985 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Mon, 31 Jul 2023 13:20:44 +0200 Subject: [PATCH] Send pet away when player goes AFK --- build.gradle.kts | 1 + .../java/com/alttd/afkdectector/AFKDetector.java | 3 +++ .../alttd/afkdectector/afkplayer/AFKPlayer.java | 16 +++++++++++++++- src/main/resources/plugin.yml | 2 ++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2b045fa..9800927 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -44,4 +44,5 @@ tasks { dependencies { implementation("com.alttd:Galaxy-API:1.20.1-R0.1-SNAPSHOT") + compileOnly("de.keyle:mypet:3.11-SNAPSHOT") } \ No newline at end of file diff --git a/src/main/java/com/alttd/afkdectector/AFKDetector.java b/src/main/java/com/alttd/afkdectector/AFKDetector.java index 335054c..e4a5ccc 100755 --- a/src/main/java/com/alttd/afkdectector/AFKDetector.java +++ b/src/main/java/com/alttd/afkdectector/AFKDetector.java @@ -46,6 +46,8 @@ public class AFKDetector extends JavaPlugin implements Listener { public static MiniMessage miniMessage; + public static boolean myPetEnabled = false; + @Override public void onEnable() { try { @@ -58,6 +60,7 @@ public class AFKDetector extends JavaPlugin implements Listener { getCommand("afkcheck").setExecutor(new AFKCheckCommand(this)); getCommand("reloadafkdetector").setExecutor(new ReloadCommand(this)); new AFKCheckTimer(this).init(); + myPetEnabled = getServer().getPluginManager().isPluginEnabled("MyPet"); } catch (Throwable t) { getLogger().severe("An error has occured while loading AFKDetector"); if (!(t instanceof ExceptionInInitializerError)) { diff --git a/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java b/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java index 55fe7d6..ad8e8b9 100755 --- a/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java +++ b/src/main/java/com/alttd/afkdectector/afkplayer/AFKPlayer.java @@ -3,6 +3,9 @@ package com.alttd.afkdectector.afkplayer; import com.alttd.afkdectector.AFKDetector; import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Messages; +import de.Keyle.MyPet.MyPetApi; +import de.Keyle.MyPet.api.entity.MyPet; +import de.Keyle.MyPet.api.player.MyPetPlayer; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; @@ -94,6 +97,7 @@ public class AFKPlayer { } public void setAFK(Player player) { + sendPetAway(); bossBar.setTitle(afkKickSoon); bossBar.setColor(BarColor.RED); player.setAfk(true); @@ -113,7 +117,7 @@ public class AFKPlayer { } public void warnPlayer(Player player) { - updateBossBarProgress(Config.TOGGLE_TIME); + if (AFKDetector.myPetEnabled) updateBossBarProgress(Config.TOGGLE_TIME); if (isWarned) return; bossBar.setColor(BarColor.PURPLE); @@ -127,4 +131,14 @@ public class AFKPlayer { double toggleSeconds = TimeUnit.MINUTES.toSeconds(totalAllowedMinutes); bossBar.setProgress(Math.min(afkSeconds / toggleSeconds, 1)); } + + void sendPetAway() { + MyPetPlayer myPetPlayer = MyPetApi.getPlayerManager().getMyPetPlayer(player); + + if (myPetPlayer == null || !myPetPlayer.hasMyPet() || !myPetPlayer.getMyPet().getStatus().equals(MyPet.PetState.Here)) + return; + + MyPet myPet = myPetPlayer.getMyPet(); + myPet.removePet(); + } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 86acea8..402fd3c 100755 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,6 +3,8 @@ name: AFKDetector version: 2.0 api-version: 1.18 author: Destro174 +softdepend: + - MyPet description: Checks if a player is afk.