Compare commits

...

10 Commits

Author SHA1 Message Date
Len 66276fbf47 Improve support for mypet 2024-04-20 15:12:13 +02:00
Len 1672fccced Automatically update version in plugin.yml 2023-12-30 22:37:03 +01:00
Len 1e7d3c7d93 Add Jenkinsfile 2023-12-30 21:34:09 +01:00
Len d179384954 Fix bossbar not working when mypet is not enabled 2023-12-30 13:52:33 +01:00
Len 687e063ad9 Add buildnumber 2023-12-25 14:35:44 +01:00
Len cf9619d0f9 Update .gitignore 2023-12-17 13:14:50 +01:00
Len a00d7cc599 Update to 1.20.4 2023-12-17 13:11:06 +01:00
Len 88ac1e40ad Do not set setSleepingIgnored, functionality is included in Galaxy 2023-08-11 20:55:03 +02:00
Len 25b9a6733e Do not kick staff while they are vanished 2023-07-31 13:29:28 +02:00
Len 4a21cb3d33 Send pet away when player goes AFK 2023-07-31 13:20:44 +02:00
10 changed files with 85 additions and 20 deletions

4
.gitignore vendored
View File

@ -36,4 +36,6 @@ target/
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid* hs_err_pid*
.gradle .gradle
build/
!gradle/wrapper/gradle-wrapper.jar

20
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,20 @@
pipeline {
agent any
stages {
stage('Gradle') {
steps {
sh './gradlew build'
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: 'build/libs/', followSymlinks: false
}
}
stage('discord') {
steps {
discordSend description: "Build: ${BUILD_NUMBER}", showChangeset: true, result: currentBuild.currentResult, title: currentBuild.fullProjectName, webhookURL: env.discordwebhook
}
}
}
}

View File

@ -1,4 +1,4 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation import java.io.ByteArrayOutputStream
plugins { plugins {
id("java") id("java")
@ -6,7 +6,7 @@ plugins {
} }
group = "com.alttd" group = "com.alttd"
version = "2.1.5" version = System.getenv("BUILD_NUMBER") ?: gitCommit()
description = "Altitude AFK Detector plugin." description = "Altitude AFK Detector plugin."
apply<JavaLibraryPlugin>() apply<JavaLibraryPlugin>()
@ -25,23 +25,30 @@ tasks {
options.encoding = Charsets.UTF_8.name() options.encoding = Charsets.UTF_8.name()
} }
shadowJar { jar {
dependsOn(getByName("relocateJars") as ConfigureShadowRelocation) archiveFileName.set("${rootProject.name}.jar")
archiveFileName.set("${project.name}-${project.version}.jar")
minimize()
configurations = listOf(project.configurations.shadow.get())
} }
build { processResources {
dependsOn(shadowJar) filteringCharset = Charsets.UTF_8.name()
} duplicatesStrategy = DuplicatesStrategy.INCLUDE
filesMatching("plugin.yml") {
create<ConfigureShadowRelocation>("relocateJars") { expand(Pair("projectVersion", project.version))
target = shadowJar.get() }
prefix = "${project.name}.lib"
} }
} }
dependencies { dependencies {
implementation("com.alttd:Galaxy-API:1.20.1-R0.1-SNAPSHOT") implementation("com.alttd:Galaxy-API:1.20.4-R0.1-SNAPSHOT")
compileOnly("de.keyle:mypet:3.11-SNAPSHOT")
}
fun gitCommit(): String {
val os = ByteArrayOutputStream()
project.exec {
isIgnoreExitValue = true
commandLine = "git rev-parse --short HEAD".split(" ")
standardOutput = os
}
return String(os.toByteArray()).trim()
} }

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@ -87,7 +87,7 @@ public class AFKCheckTimer extends BukkitRunnable {
private void resetAFKPlayer(Location pastLocation, Player player, AFKPlayer afkPlayer) { private void resetAFKPlayer(Location pastLocation, Player player, AFKPlayer afkPlayer) {
afkPlayer.setPlayerToSphereCenter(pastLocation); afkPlayer.setPlayerToSphereCenter(pastLocation);
afkPlayer.setStandingTime(System.currentTimeMillis()); afkPlayer.setStandingTime(System.currentTimeMillis());
player.setSleepingIgnored(false); // player.setSleepingIgnored(false);
afkPlayer.resetAFK(); afkPlayer.resetAFK();
MessageTimer currentTimer = plugin.messageTimers.get(player.getUniqueId()); MessageTimer currentTimer = plugin.messageTimers.get(player.getUniqueId());
@ -98,7 +98,7 @@ public class AFKCheckTimer extends BukkitRunnable {
private void setPlayerAFK(AFKPlayer afkPlayer, Player player) { private void setPlayerAFK(AFKPlayer afkPlayer, Player player) {
afkPlayer.setAFK(player); afkPlayer.setAFK(player);
player.setSleepingIgnored(true); // player.setSleepingIgnored(true);
//player.setCanPickupItems(false); //player.setCanPickupItems(false);
if (Config.AFK_TOGGLE_MESSAGES) { if (Config.AFK_TOGGLE_MESSAGES) {
TagResolver placeholders = TagResolver.resolver( TagResolver placeholders = TagResolver.resolver(

View File

@ -46,6 +46,8 @@ public class AFKDetector extends JavaPlugin implements Listener {
public static MiniMessage miniMessage; public static MiniMessage miniMessage;
public static boolean myPetEnabled = false;
@Override @Override
public void onEnable() { public void onEnable() {
try { try {
@ -58,6 +60,7 @@ public class AFKDetector extends JavaPlugin implements Listener {
getCommand("afkcheck").setExecutor(new AFKCheckCommand(this)); getCommand("afkcheck").setExecutor(new AFKCheckCommand(this));
getCommand("reloadafkdetector").setExecutor(new ReloadCommand(this)); getCommand("reloadafkdetector").setExecutor(new ReloadCommand(this));
new AFKCheckTimer(this).init(); new AFKCheckTimer(this).init();
myPetEnabled = getServer().getPluginManager().getPlugin("MyPet") != null;
} catch (Throwable t) { } catch (Throwable t) {
getLogger().severe("An error has occured while loading AFKDetector"); getLogger().severe("An error has occured while loading AFKDetector");
if (!(t instanceof ExceptionInInitializerError)) { if (!(t instanceof ExceptionInInitializerError)) {

View File

@ -11,6 +11,7 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import net.kyori.adventure.title.Title; import net.kyori.adventure.title.Title;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.Date; import java.util.Date;
@ -49,7 +50,7 @@ public class MessageTimer extends BukkitRunnable {
public void run() { public void run() {
Player player = Bukkit.getPlayer(uuid); Player player = Bukkit.getPlayer(uuid);
if (plugin.messageTimers.containsKey(uuid)) { if (plugin.messageTimers.containsKey(uuid)) {
if (player == null || player.hasPermission("afkdetector.kickexempt")) { if (player == null || player.hasPermission("afkdetector.kickexempt") || isVanished(player)) {
cancel(); cancel();
return; return;
} }
@ -88,4 +89,12 @@ public class MessageTimer extends BukkitRunnable {
} }
} }
} }
private boolean isVanished(Player player) {
for (MetadataValue meta : player.getMetadata("vanished")) {
if (meta.asBoolean()) return true;
}
return false;
}
} }

View File

@ -3,6 +3,9 @@ package com.alttd.afkdectector.afkplayer;
import com.alttd.afkdectector.AFKDetector; import com.alttd.afkdectector.AFKDetector;
import com.alttd.afkdectector.config.Config; import com.alttd.afkdectector.config.Config;
import com.alttd.afkdectector.config.Messages; 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.Component;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
@ -94,6 +97,9 @@ public class AFKPlayer {
} }
public void setAFK(Player player) { public void setAFK(Player player) {
if (AFKDetector.myPetEnabled)
sendPetAway();
bossBar.setTitle(afkKickSoon); bossBar.setTitle(afkKickSoon);
bossBar.setColor(BarColor.RED); bossBar.setColor(BarColor.RED);
player.setAfk(true); player.setAfk(true);
@ -127,4 +133,15 @@ public class AFKPlayer {
double toggleSeconds = TimeUnit.MINUTES.toSeconds(totalAllowedMinutes); double toggleSeconds = TimeUnit.MINUTES.toSeconds(totalAllowedMinutes);
bossBar.setProgress(Math.min(afkSeconds / toggleSeconds, 1)); bossBar.setProgress(Math.min(afkSeconds / toggleSeconds, 1));
} }
void sendPetAway() {
if (!AFKDetector.myPetEnabled) return;
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();
}
} }

View File

@ -1,8 +1,10 @@
main: com.alttd.afkdectector.AFKDetector main: com.alttd.afkdectector.AFKDetector
name: AFKDetector name: AFKDetector
version: 2.0 version: ${projectVersion}
api-version: 1.18 api-version: 1.18
author: Destro174 author: Destro174
softdepend:
- MyPet
description: Checks if a player is afk. description: Checks if a player is afk.