Add files via upload

This commit is contained in:
2025-09-14 09:25:53 +02:00
committed by GitHub
parent 5ad2000d5e
commit a49044449a
3 changed files with 200 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.jakob48</groupId>
<artifactId>restartcountdown</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<java.version>21</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<paper.version>1.20.1-R0.1-SNAPSHOT</paper.version>
</properties>
<repositories>
<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>${paper.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Compiler Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<!-- Shade Plugin, optional für fertiges JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>false</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,115 @@
package de.jakob48;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
public class restartcountdown extends JavaPlugin {
private BukkitRunnable countdownTask = null; // Referenz auf aktuellen Countdown
@Override
public void onEnable() {
getLogger().info("RestartCountdown Plugin aktiviert!");
}
@Override
public void onDisable() {
getLogger().info("RestartCountdown Plugin deaktiviert!");
if (countdownTask != null) countdownTask.cancel();
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!command.getName().equalsIgnoreCase("restartserver")) return false;
if (args.length == 0) {
sender.sendMessage("§cVerwendung: /restartserver <Zeit> oder /restartserver stop");
return false;
}
if (args[0].equalsIgnoreCase("stop")) {
if (countdownTask != null) {
countdownTask.cancel();
countdownTask = null;
Bukkit.broadcastMessage("§cCountdown wurde gestoppt!");
} else {
sender.sendMessage("§cEs läuft kein Countdown!");
}
return true;
}
long seconds = parseTime(args[0]);
if (seconds <= 0) {
sender.sendMessage("§cUngültige Zeitangabe!");
return false;
}
sender.sendMessage("§aServerneustart in " + formatTime(seconds) + " gestartet!");
startCountdown(seconds);
return true;
}
private long parseTime(String input) {
try {
if (input.endsWith("s")) return Long.parseLong(input.replace("s", ""));
if (input.endsWith("m")) return Long.parseLong(input.replace("m", "")) * 60;
if (input.endsWith("h")) return Long.parseLong(input.replace("h", "")) * 3600;
} catch (NumberFormatException e) {
return -1;
}
return -1;
}
private void startCountdown(long seconds) {
if (countdownTask != null) countdownTask.cancel();
countdownTask = new BukkitRunnable() {
long timeLeft = seconds;
@Override
public void run() {
if (timeLeft <= 0) {
Bukkit.broadcastMessage("§cServer wird jetzt neu gestartet!");
Bukkit.shutdown();
cancel();
countdownTask = null;
return;
}
if (timeLeft == seconds) {
Bukkit.broadcastMessage("§eServerneustart in " + formatTime(timeLeft) + "!");
}
else if (timeLeft > 600 && timeLeft % 600 == 0) {
Bukkit.broadcastMessage("§eServerneustart in " + formatTime(timeLeft) + "!");
}
else if (timeLeft <= 600 && timeLeft >= 60 && timeLeft % 60 == 0) {
Bukkit.broadcastMessage("§eServerneustart in " + formatTime(timeLeft) + "!");
}
else if (timeLeft == 20) {
Bukkit.broadcastMessage("§cServerneustart in 20 Sekunden!");
}
else if (timeLeft <= 10) {
Bukkit.broadcastMessage("§cServerneustart in " + timeLeft + " Sekunden!");
}
timeLeft--;
}
};
countdownTask.runTaskTimer(this, 0, 20); // 20 Ticks = 1 Sekunde
}
private String formatTime(long seconds) {
long hours = seconds / 3600;
long minutes = (seconds % 3600) / 60;
long secs = seconds % 60;
StringBuilder sb = new StringBuilder();
if (hours > 0) sb.append(hours).append("h ");
if (minutes > 0) sb.append(minutes).append("m ");
if (secs > 0) sb.append(secs).append("s");
return sb.toString().trim();
}
}
+12
View File
@@ -0,0 +1,12 @@
name: RestartCountdown
version: 1.0
main: de.jakob48.restartcountdown
api-version: 1.20
commands:
restartserver:
description: Startet einen Server-Neustart nach Countdown
usage: /restartserver <Zeit>
permission: restartserver.use
permissions:
restartserver.use:
default: op