This commit is contained in:
commit
604402d2df
67
.gitea/workflows/build.yml
Normal file
67
.gitea/workflows/build.yml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
name: Build Plugin
|
||||||
|
run-name: Build Plugin with maven
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
- name: Install Tools
|
||||||
|
run: apt update -y && apt install -y maven
|
||||||
|
- name: Build
|
||||||
|
run: mvn clean package
|
||||||
|
- name: Upload
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: LSServerManager
|
||||||
|
path: target/LSServerManager*.jar
|
||||||
|
- name: Create Pre Release
|
||||||
|
run: |
|
||||||
|
FILES=./target/LSServerManager*.jar
|
||||||
|
USER=LagacySurvival
|
||||||
|
REPO=ServerManager
|
||||||
|
# Set up variables
|
||||||
|
AUTH_HEADER="Authorization: token ${{ secrets.TOKEN }}"
|
||||||
|
CONTENT_TYPE="Content-Type: application/json"
|
||||||
|
API_URL="https://dev.npid7.de/api/v1/repos/$USER/$REPO/releases"
|
||||||
|
COMMIT_HASH=$(git rev-parse --short HEAD)
|
||||||
|
AUTHOR_NAME=$(git log -1 --pretty=format:'%an')
|
||||||
|
COMMIT_SUBJECT=$(git log -1 --pretty=format:'%s')
|
||||||
|
COMMIT_MESSAGE=$(git log -1 --pretty=format:'%b')
|
||||||
|
DATETIME=$(date +'%Y%m%d_%H%M')
|
||||||
|
echo "Create Release"
|
||||||
|
RELEASE_INFO="{\"tag_name\": \"p$DATETIME\", \"name\": \"Test | $COMMIT_HASH\", \"body\": \"$AUTHOR_NAME - $COMMIT_SUBJECT\\n\\n$COMMIT_MESSAGE\", \"prerelease\": true}"
|
||||||
|
RESPONSE=$(curl -s -X POST -H "$AUTH_HEADER" -H "$CONTENT_TYPE" -d "$RELEASE_INFO" "$API_URL")
|
||||||
|
RELEASE_ID=$(echo $RESPONSE | jq --raw-output '.id')
|
||||||
|
echo "Release created with ID: $RELEASE_ID"
|
||||||
|
if [ "$RELEASE_ID" == "null" ]; then
|
||||||
|
echo "Failed to create release."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Upload File/s"
|
||||||
|
for file in $FILES; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
FILE_NAME=$(basename "$file")
|
||||||
|
FILE_PATH="$file"
|
||||||
|
FILE_SIZE=$(stat -c%s "$FILE_PATH")
|
||||||
|
UPLOAD_URL="https://dev.npid7.de/api/v1/repos/$USER/$REPO/releases/$RELEASE_ID/assets?name=$FILE_NAME"
|
||||||
|
CONTENT_LENGTH="Content-Length: $FILE_SIZE"
|
||||||
|
CONTENT_TYPE="Content-Type: application/7z-x-compressed"
|
||||||
|
echo "Uploading asset: $FILE_NAME"
|
||||||
|
RESPONSE=$(curl -s -X POST -H "Authorization: token ${{ secrets.TOKEN }}" \
|
||||||
|
-H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" \
|
||||||
|
--upload-file "$FILE_PATH" "$UPLOAD_URL")
|
||||||
|
if echo "$RESPONSE" | jq -e '.message' >/dev/null; then
|
||||||
|
echo "Error uploading $FILE_NAME: $(echo "$RESPONSE" | jq -r .message)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Successfully uploaded $FILE_NAME"
|
||||||
|
fi
|
||||||
|
done
|
113
.gitignore
vendored
Normal file
113
.gitignore
vendored
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# User-specific stuff
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# IntelliJ
|
||||||
|
out/
|
||||||
|
|
||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
*~
|
||||||
|
|
||||||
|
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||||
|
.fuse_hidden*
|
||||||
|
|
||||||
|
# KDE directory preferences
|
||||||
|
.directory
|
||||||
|
|
||||||
|
# Linux trash folder which might appear on any partition or disk
|
||||||
|
.Trash-*
|
||||||
|
|
||||||
|
# .nfs files are created when an open file is removed but is still being accessed
|
||||||
|
.nfs*
|
||||||
|
|
||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
# Windows thumbnail cache files
|
||||||
|
Thumbs.db
|
||||||
|
Thumbs.db:encryptable
|
||||||
|
ehthumbs.db
|
||||||
|
ehthumbs_vista.db
|
||||||
|
|
||||||
|
# Dump file
|
||||||
|
*.stackdump
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
[Dd]esktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Windows Installer files
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# Windows shortcuts
|
||||||
|
*.lnk
|
||||||
|
|
||||||
|
target/
|
||||||
|
|
||||||
|
pom.xml.tag
|
||||||
|
pom.xml.releaseBackup
|
||||||
|
pom.xml.versionsBackup
|
||||||
|
pom.xml.next
|
||||||
|
|
||||||
|
release.properties
|
||||||
|
dependency-reduced-pom.xml
|
||||||
|
buildNumber.properties
|
||||||
|
.mvn/timing.properties
|
||||||
|
.mvn/wrapper/maven-wrapper.jar
|
||||||
|
.flattened-pom.xml
|
||||||
|
|
||||||
|
# Common working directory
|
||||||
|
run/
|
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"java.compile.nullAnalysis.mode": "automatic",
|
||||||
|
"java.configuration.updateBuildConfiguration": "interactive"
|
||||||
|
}
|
93
pom.xml
Normal file
93
pom.xml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<?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://www.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>de.survivalprojekt</groupId>
|
||||||
|
<artifactId>LSServerManager</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>LSServerManager</name>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<java.version>17</java.version>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<repositories>
|
||||||
|
<!-- Spigot Repository -->
|
||||||
|
<repository>
|
||||||
|
<id>spigotmc-repo</id>
|
||||||
|
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<!-- Adventure Releases -->
|
||||||
|
<repository>
|
||||||
|
<id>kyori</id>
|
||||||
|
<url>https://s01.oss.sonatype.org/content/repositories/releases/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Spigot-API für die Bukkit-Integration -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot-api</artifactId>
|
||||||
|
<version>1.21.1-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Adventure API (für MiniMessage und Adventure-Integration) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.kyori</groupId>
|
||||||
|
<artifactId>adventure-api</artifactId>
|
||||||
|
<version>4.14.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- MiniMessage Unterstützung -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.kyori</groupId>
|
||||||
|
<artifactId>adventure-text-minimessage</artifactId>
|
||||||
|
<version>4.14.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.kyori</groupId>
|
||||||
|
<artifactId>adventure-text-serializer-legacy</artifactId>
|
||||||
|
<version>4.14.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<defaultGoal>clean package</defaultGoal>
|
||||||
|
<plugins>
|
||||||
|
<!-- Compiler Plugin für Java -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.10.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<!-- Shade Plugin für Abhängigkeiten -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.4.1</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -0,0 +1,31 @@
|
|||||||
|
package de.survivalprojekt.LS.Commands;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class MotdCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
if (args[0].equals("reload")) {
|
||||||
|
if (!sender.hasPermission("lss.motd.reload")) {
|
||||||
|
sender.sendMessage("§cDu hast keine Berechtigung dafür!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerManager.getInst().getMotdManager().reloadMotd();
|
||||||
|
sender.sendMessage("§aMOTD erfolgreich neu geladen.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage("§cUnbekanter Sub Command!");
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§cZu viele oder zu wenige argumente!");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package de.survivalprojekt.LS.Commands;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
|
||||||
|
public class WartungsCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
if (args.length == 1) {
|
||||||
|
if (args[0].equals("an")) {
|
||||||
|
inst.getWartungsManager().setIsWartung(true);
|
||||||
|
inst.getWartungsManager().save();
|
||||||
|
for (Player pl : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (!pl.hasPermission("lss.wartung.bypass")) {
|
||||||
|
String kickMessage = inst.getWartungsManager().getKickMsg();
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
Component kickComponent = miniMessage.deserialize(kickMessage);
|
||||||
|
|
||||||
|
pl.kickPlayer(LegacyComponentSerializer.legacySection().serialize(kickComponent));
|
||||||
|
} else {
|
||||||
|
pl.sendMessage("§aDer Wartungsmodus wurde aktiviert.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (args[0].equals("aus")) {
|
||||||
|
inst.getWartungsManager().setIsWartung(false);
|
||||||
|
inst.getWartungsManager().save();
|
||||||
|
for (Player pl : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (pl.hasPermission("lss.wartung.bypass")) {
|
||||||
|
pl.sendMessage("§cDer Wartungsmodus wurde deaktiviert.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (args[0].equals("reload")) {
|
||||||
|
inst.getWartungsManager().reloadWartung();
|
||||||
|
sender.sendMessage("§aWartungskonfiguration wurde neu geladen.");
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§cUngültiges argument: " + args[0]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§cZu viele oder zu wenige argumente!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
package de.survivalprojekt.LS.Commands;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class WhitelistCommand implements CommandExecutor {
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
if (args.length > 0) {
|
||||||
|
if (args[0].equals("add")) {
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (!inst.getWhitelistManager().addPlayer(args[1])) {
|
||||||
|
sender.sendMessage("§cSpeiler " + args[1] + " konnte nicht hinzugefügt werden!");
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§aSpeiler " + args[1] + " wurde hinzugefügt!");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (args[0].equals("remove")) {
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (!inst.getWhitelistManager().removePlayer(args[1])) {
|
||||||
|
sender.sendMessage("§cSpeiler " + args[1] + " konnte nicht entfernt!");
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§aSpeiler " + args[1] + " wurde entfernt!");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if (args[0].equals("enable")) {
|
||||||
|
inst.getWhitelistManager().setWhitelistEnabled(true);
|
||||||
|
sender.sendMessage("§cWhitelist wurde deaktiviert.");
|
||||||
|
} else if (args[0].equals("disable")) {
|
||||||
|
inst.getWhitelistManager().setWhitelistEnabled(false);
|
||||||
|
sender.sendMessage("§aWhitelist wurde aktiviert.");
|
||||||
|
} else if (args[0].equals("reload")) {
|
||||||
|
inst.getWhitelistManager().reload();
|
||||||
|
sender.sendMessage("§aWartungskonfiguration wurde neu geladen.");
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§cUngültiges argument: " + args[0]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("§cZu viele oder zu wenige argumente!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
package de.survivalprojekt.LS.Listeners;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
|
||||||
|
public class PlayerListener implements Listener {
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerLogin(PlayerLoginEvent e) {
|
||||||
|
Player pl = e.getPlayer();
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
if (inst.getWartungsManager().getIsWartung()) {
|
||||||
|
if (pl.hasPermission("lss.wartung.bypass")) {
|
||||||
|
inst.getLogger().info(pl.getName() + " hat die Berechtigung 'lss.wartung.bypass' und darf joinen.");
|
||||||
|
e.allow();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String kickMsg = inst.getWartungsManager().getKickMsg();
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
Component kickComponent = miniMessage.deserialize(kickMsg);
|
||||||
|
|
||||||
|
// Spieler wird sauber gekickt ??? DEUTSCHKURS DF ?????
|
||||||
|
e.disallow(PlayerLoginEvent.Result.KICK_OTHER,
|
||||||
|
LegacyComponentSerializer.legacySection().serialize(kickComponent));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (inst.getWhitelistManager().getWhitelistEnabled()) {
|
||||||
|
String uuid = pl.getUniqueId().toString();
|
||||||
|
if (!inst.getWhitelistManager().isWhitelisted(UUID.fromString(uuid))) {
|
||||||
|
String rawMessage = inst.getWhitelistManager().getMessage();
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
Component messageComponent = miniMessage.deserialize(rawMessage);
|
||||||
|
e.disallow(PlayerLoginEvent.Result.KICK_OTHER,
|
||||||
|
LegacyComponentSerializer.legacySection().serialize(messageComponent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package de.survivalprojekt.LS.Listeners;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.server.ServerListPingEvent;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class ServerListListener implements Listener {
|
||||||
|
@EventHandler
|
||||||
|
public void onServerListPing(ServerListPingEvent event) {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
|
||||||
|
if(inst.getWartungsManager().getIsWartung()) {
|
||||||
|
String wartung = inst.getWartungsManager().getMotd();
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
Component motdComponent = miniMessage.deserialize(wartung);
|
||||||
|
event.setMotd(LegacyComponentSerializer.legacySection().serialize(motdComponent));
|
||||||
|
event.setMaxPlayers(0);
|
||||||
|
try {
|
||||||
|
event.setServerIcon(null); // Zeigt kein Server-Icon
|
||||||
|
} catch (Exception e) {
|
||||||
|
inst.getLogger().warning("Konnte das Server-Icon nicht setzen: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String motd = inst.getMotdManager().getMotd();
|
||||||
|
if (motd != null) {
|
||||||
|
MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
Component motdComponent = miniMessage.deserialize(motd);
|
||||||
|
event.setMotd(LegacyComponentSerializer.legacySection().serialize(motdComponent));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lade das Logo aus dem Logos-Ordner
|
||||||
|
File logoFile = new File(inst.getDataFolder() + "/" + inst.getMotdManager().getFolderName() + "/"
|
||||||
|
+ inst.getMotdManager().getIconName());
|
||||||
|
if (logoFile.exists()) {
|
||||||
|
try {
|
||||||
|
event.setServerIcon(Bukkit.loadServerIcon(logoFile));
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().severe("Fehler beim Laden des Server-Icons: " + e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
inst.getLogger()
|
||||||
|
.warning("Das Logo 'server-icon.png' wurde im Logos-Ordner nicht gefunden.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,87 @@
|
|||||||
|
package de.survivalprojekt.LS.Managers;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class MotdManager {
|
||||||
|
final String folderName = "serevricon";
|
||||||
|
final String iconName = "server-icon.png";
|
||||||
|
File motdFile;
|
||||||
|
|
||||||
|
public MotdManager() {
|
||||||
|
initFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFiles() {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
/////// SETUP CONFIG ///////
|
||||||
|
motdFile = new File(inst.getDataFolder(), "motd.yml");
|
||||||
|
if (!motdFile.exists()) {
|
||||||
|
try (InputStream inputStream = inst.getResource("motd.yml")) {
|
||||||
|
if (inputStream != null) {
|
||||||
|
Files.copy(inputStream, motdFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
inst.getLogger().info("Die Standard-MOTD-Konfigurationsdatei wurde erstellt.");
|
||||||
|
} else {
|
||||||
|
inst.getLogger().warning("Standart MOTD-Konfigurationsdatei konnte nicht gefunden werden.");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().severe("Fehler beim erstellen der MOTD-Konfigurationsdatei: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/////// SETUP LOGO ///////
|
||||||
|
// Erstelle ordner, falss noch nicht vorhanden
|
||||||
|
File logoFolder = new File(inst.getDataFolder() + "/" + folderName);
|
||||||
|
if (!logoFolder.exists()) {
|
||||||
|
logoFolder.mkdirs();
|
||||||
|
inst.getLogger().info("Der Ordner " + folderName + " wurde erstellt.");
|
||||||
|
}
|
||||||
|
File logoFile = new File(logoFolder, iconName);
|
||||||
|
// Kopiere das Standardlogo, falls nicht vorhanden
|
||||||
|
if (!logoFile.exists()) {
|
||||||
|
try (InputStream inputStream = inst.getResource(iconName)) {
|
||||||
|
if (inputStream != null) {
|
||||||
|
Files.copy(inputStream, logoFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
inst.getLogger().info("Das Standard-Server-Icon wurde im " + folderName + " Ordner erstellt.");
|
||||||
|
} else {
|
||||||
|
inst.getLogger().warning("Standard-Logo " + iconName + " konnte nicht gefunden werden.");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().severe("Fehler beim Einrichten des Standard-Server-Icons: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reloadMotd() {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
motdFile = new File(inst.getDataFolder(), "motd.yml");
|
||||||
|
if (!motdFile.exists()) {
|
||||||
|
initFiles();
|
||||||
|
}
|
||||||
|
inst.getLogger().info("MOTD-Konfiguration wurde neu geladen.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMotd() {
|
||||||
|
FileConfiguration motdConfig = YamlConfiguration.loadConfiguration(motdFile);
|
||||||
|
|
||||||
|
if (motdConfig.contains("motd")) {
|
||||||
|
return motdConfig.getString("motd");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFolderName() {
|
||||||
|
return this.folderName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIconName() {
|
||||||
|
return this.iconName;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
package de.survivalprojekt.LS.Managers;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class WartungsManager {
|
||||||
|
|
||||||
|
File wartungsFile;
|
||||||
|
FileConfiguration wartungsConfig;
|
||||||
|
boolean isWartung;
|
||||||
|
|
||||||
|
public WartungsManager() {
|
||||||
|
initFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFile() {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
/////// SETUP CONFIG ///////
|
||||||
|
wartungsFile = new File(inst.getDataFolder(), "wartung.yml");
|
||||||
|
if (!wartungsFile.exists()) {
|
||||||
|
try (InputStream inputStream = inst.getResource("wartung.yml")) {
|
||||||
|
if (inputStream != null) {
|
||||||
|
Files.copy(inputStream, wartungsFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
inst.getLogger().info("Die Standard-Wartungs-Konfigurationsdatei wurde erstellt.");
|
||||||
|
} else {
|
||||||
|
inst.getLogger().warning("Standart Wartungs-Konfigurationsdatei konnte nicht gefunden werden.");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().severe("Fehler beim erstellen der Wartungs-Konfigurationsdatei: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wartungsConfig = YamlConfiguration.loadConfiguration(wartungsFile);
|
||||||
|
isWartung = wartungsConfig.getBoolean("wartungsModus", false);
|
||||||
|
///// GIBT KEINEN GRUND JEDEN SCHEISS ZU LOGGEN /////
|
||||||
|
/// DAFÜR GIBT ES FUCKING ERROR MESSAGES /////
|
||||||
|
inst.getLogger().info("Wartungs-Konfiguration wurde <neu> geladen.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reloadWartung() {
|
||||||
|
initFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
wartungsConfig.set("wartungsModus", isWartung);
|
||||||
|
try {
|
||||||
|
wartungsConfig.save(wartungsFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
ServerManager.getInst().getLogger()
|
||||||
|
.severe("Fehler beim speichern der Wartungskonfigurationsdatei: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMotd() {
|
||||||
|
return wartungsConfig.getString("wartungsMotd");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKickMsg() {
|
||||||
|
return wartungsConfig.getString("kickMessage");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getIsWartung() {
|
||||||
|
return this.isWartung;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIsWartung(boolean value) {
|
||||||
|
this.isWartung = value;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,129 @@
|
|||||||
|
package de.survivalprojekt.LS.Managers;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.StandardCopyOption;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class WhitelistManager {
|
||||||
|
private File whitelistFile;
|
||||||
|
private FileConfiguration whitelistConfig;
|
||||||
|
private boolean whitelistEnabled = true; // Standardmäßig aktiviert
|
||||||
|
|
||||||
|
public WhitelistManager() {
|
||||||
|
initFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initFile() {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
/////// SETUP CONFIG ///////
|
||||||
|
whitelistFile = new File(inst.getDataFolder(), "whitelist.yml");
|
||||||
|
if (!whitelistFile.exists()) {
|
||||||
|
try (InputStream inputStream = inst.getResource("whitelist.yml")) {
|
||||||
|
if (inputStream != null) {
|
||||||
|
Files.copy(inputStream, whitelistFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
inst.getLogger().info("Die Standard-Whitelist-Konfigurationsdatei wurde erstellt.");
|
||||||
|
} else {
|
||||||
|
inst.getLogger().warning("Standart Whitelist-Konfigurationsdatei konnte nicht gefunden werden.");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().severe("Fehler beim erstellen der Whitelist-Konfigurationsdatei: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
whitelistConfig = YamlConfiguration.loadConfiguration(whitelistFile);
|
||||||
|
///// GIBT KEINEN GRUND JEDEN SCHEISS ZU LOGGEN /////
|
||||||
|
/// DAFÜR GIBT ES FUCKING ERROR MESSAGES /////
|
||||||
|
inst.getLogger().info("Whitelist-Konfiguration wurde <neu> geladen.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reload() {
|
||||||
|
initFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
try {
|
||||||
|
whitelistConfig.save(whitelistFile);
|
||||||
|
} catch (IOException e) {
|
||||||
|
inst.getLogger().info("Fehler beim Speichern der Whitelist: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addPlayer(String name) {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
OfflinePlayer pl = Bukkit.getOfflinePlayer(name);
|
||||||
|
UUID id = null;
|
||||||
|
String rname = null;
|
||||||
|
if (pl != null) {
|
||||||
|
rname = pl.getName();
|
||||||
|
id = pl.getUniqueId();
|
||||||
|
}
|
||||||
|
if (id == null || rname == null || rname.isEmpty()) {
|
||||||
|
inst.getLogger().info("Spieler " + name + " konnte nicht gefunden werden!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (whitelistConfig.getConfigurationSection("whitelist") == null) {
|
||||||
|
whitelistConfig.createSection("whitelist");
|
||||||
|
}
|
||||||
|
whitelistConfig.set("whitelist." + id.toString() + ".name", rname);
|
||||||
|
save();
|
||||||
|
inst.getLogger().info("Spieler " + rname + "wurde zur Whitelist hinzugefügt");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removePlayer(String name) {
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
if (whitelistConfig.getConfigurationSection("whitelist") != null) {
|
||||||
|
for (String uuid : whitelistConfig.getConfigurationSection("whitelist").getKeys(false)) {
|
||||||
|
String lname = whitelistConfig.getString("whitelist." + uuid + ".name");
|
||||||
|
if (lname != null && lname.equalsIgnoreCase(name)) {
|
||||||
|
whitelistConfig.set("whitelist." + uuid, null);
|
||||||
|
save();
|
||||||
|
inst.getLogger().info("Spieler " + lname + " wurde von der Whitelist entfernt.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inst.getLogger().info("Spieler " + name + " ist nicht auf der Whitelist.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getWhitelistedPlayers() {
|
||||||
|
if (whitelistConfig.getConfigurationSection("whitelist") == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return whitelistConfig.getConfigurationSection("whitelist").getKeys(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getWhitelistedPlayerName(String uuid) {
|
||||||
|
return whitelistConfig.getString("whitelist." + uuid + ".name");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWhitelisted(UUID uuid) {
|
||||||
|
return whitelistConfig.getConfigurationSection("whitelist") != null &&
|
||||||
|
whitelistConfig.getConfigurationSection("whitelist").contains(uuid.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMessage() {
|
||||||
|
return whitelistConfig.getString("message");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getWhitelistEnabled() {
|
||||||
|
return this.whitelistEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWhitelistEnabled(boolean value) {
|
||||||
|
this.whitelistEnabled = value;
|
||||||
|
}
|
||||||
|
}
|
83
src/main/java/de/survivalprojekt/LS/ServerManager.java
Normal file
83
src/main/java/de/survivalprojekt/LS/ServerManager.java
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
package de.survivalprojekt.LS;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandExecutor;
|
||||||
|
import org.bukkit.command.PluginCommand;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.Commands.MotdCommand;
|
||||||
|
import de.survivalprojekt.LS.Commands.WartungsCommand;
|
||||||
|
import de.survivalprojekt.LS.Commands.WhitelistCommand;
|
||||||
|
import de.survivalprojekt.LS.Listeners.PlayerListener;
|
||||||
|
import de.survivalprojekt.LS.Listeners.ServerListListener;
|
||||||
|
import de.survivalprojekt.LS.Managers.MotdManager;
|
||||||
|
import de.survivalprojekt.LS.Managers.WartungsManager;
|
||||||
|
import de.survivalprojekt.LS.Managers.WhitelistManager;
|
||||||
|
import de.survivalprojekt.LS.TabCompleters.MotdCompleter;
|
||||||
|
import de.survivalprojekt.LS.TabCompleters.WartungsCompleter;
|
||||||
|
import de.survivalprojekt.LS.TabCompleters.WhitelistCompleter;
|
||||||
|
|
||||||
|
/// Default CMD to Override
|
||||||
|
/// whitelist
|
||||||
|
|
||||||
|
public class ServerManager extends JavaPlugin {
|
||||||
|
static ServerManager inst;
|
||||||
|
|
||||||
|
MotdManager motdManager;
|
||||||
|
WartungsManager wartungsManager;
|
||||||
|
WhitelistManager whitelistManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLoad() {
|
||||||
|
inst = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEnable() {
|
||||||
|
// Setup Data Folder
|
||||||
|
if (!getDataFolder().exists()) {
|
||||||
|
getDataFolder().mkdirs();
|
||||||
|
}
|
||||||
|
// Create Managers
|
||||||
|
motdManager = new MotdManager();
|
||||||
|
wartungsManager = new WartungsManager();
|
||||||
|
whitelistManager = new WhitelistManager();
|
||||||
|
// Declare Events
|
||||||
|
Bukkit.getPluginManager().registerEvents(new ServerListListener(), inst);
|
||||||
|
Bukkit.getPluginManager().registerEvents(new PlayerListener(), inst);
|
||||||
|
|
||||||
|
// Declare Commands [not the ovrride one]
|
||||||
|
setUpCommand("motd", new MotdCommand(), new MotdCompleter());
|
||||||
|
setUpCommand("wartung", new WartungsCommand(), new WartungsCompleter());
|
||||||
|
setUpCommand("whitelist", new WhitelistCommand(), new WhitelistCompleter());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpCommand(final String command, CommandExecutor exec, TabCompleter tc) {
|
||||||
|
PluginCommand cmd = getCommand(command);
|
||||||
|
if (cmd != null) {
|
||||||
|
cmd.setExecutor(exec);
|
||||||
|
if (tc != null) {
|
||||||
|
cmd.setTabCompleter(tc);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
getLogger().info("Error: Command " + command + " nicht gefunden!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ServerManager getInst() {
|
||||||
|
return inst;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MotdManager getMotdManager() {
|
||||||
|
return motdManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WartungsManager getWartungsManager() {
|
||||||
|
return this.wartungsManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WhitelistManager getWhitelistManager() {
|
||||||
|
return this.whitelistManager;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package de.survivalprojekt.LS.TabCompleters;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
|
|
||||||
|
public class MotdCompleter implements TabCompleter {
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(
|
||||||
|
CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
List<String> completions = new ArrayList<>();
|
||||||
|
if (command.getName().equalsIgnoreCase("motd")) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
completions.add("reload");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return completions;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package de.survivalprojekt.LS.TabCompleters;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
|
|
||||||
|
public class WartungsCompleter implements TabCompleter {
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(
|
||||||
|
CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
List<String> completions = new ArrayList<>();
|
||||||
|
if (command.getName().equalsIgnoreCase("wartung")) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
completions.add("an");
|
||||||
|
completions.add("aus");
|
||||||
|
completions.add("reload");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return completions;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package de.survivalprojekt.LS.TabCompleters;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.command.TabCompleter;
|
||||||
|
|
||||||
|
import de.survivalprojekt.LS.ServerManager;
|
||||||
|
|
||||||
|
public class WhitelistCompleter implements TabCompleter {
|
||||||
|
@Override
|
||||||
|
public List<String> onTabComplete(
|
||||||
|
CommandSender sender, Command command, String alias, String[] args) {
|
||||||
|
List<String> completions = new ArrayList<>();
|
||||||
|
ServerManager inst = ServerManager.getInst();
|
||||||
|
if (command.getName().equalsIgnoreCase("whitelist")) {
|
||||||
|
if (args.length == 1) {
|
||||||
|
completions.add("add");
|
||||||
|
completions.add("remove");
|
||||||
|
completions.add("reload");
|
||||||
|
completions.add("enable");
|
||||||
|
completions.add("disable");
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
if (args[0].equals("remove")) {
|
||||||
|
if (inst.getWhitelistManager().getWhitelistedPlayers() != null) {
|
||||||
|
for (String uuid : inst.getWhitelistManager().getWhitelistedPlayers()) {
|
||||||
|
String name = inst.getWhitelistManager().getWhitelistedPlayerName(uuid);
|
||||||
|
if (name != null) {
|
||||||
|
completions.add(name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return completions;
|
||||||
|
}
|
||||||
|
}
|
3
src/main/resources/motd.yml
Normal file
3
src/main/resources/motd.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
motd: |
|
||||||
|
<b><gradient:#B19169:#7E6D5A> ʟᴇɢᴀᴄʏ ѕᴜʀᴠɪᴠᴀʟ</gradient></b>
|
||||||
|
<gradient:#B7B7B7:#7A7A7A> ѕᴇᴀѕᴏɴ ᴏɴᴇ</gradient>
|
23
src/main/resources/plugin.yml
Normal file
23
src/main/resources/plugin.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
name: LSServerManager
|
||||||
|
version: 1.2
|
||||||
|
main: de.survivalprojekt.LS.ServerManager
|
||||||
|
api-version: 1.21
|
||||||
|
author: zD3nnis - Dennis, tobid7 - René Amthor
|
||||||
|
description: Server-Manager Plugin für Legacy Survival
|
||||||
|
|
||||||
|
commands:
|
||||||
|
motd:
|
||||||
|
description: MOTD Verwaltung.
|
||||||
|
usage: /motd <command>
|
||||||
|
permission: lss.motd.reload
|
||||||
|
permission-message: Du hast keine Berechtigung für diesen Befehl.
|
||||||
|
wartung:
|
||||||
|
description: Verwaltung Wartungsmodus.
|
||||||
|
usage: /wartung <command>
|
||||||
|
permission: lss.wartung
|
||||||
|
permission-message: Du hast keine Berechtigung für diesen Befehl.
|
||||||
|
whitelist:
|
||||||
|
description: Verwaltung Whitelist.
|
||||||
|
usage: /whitelist <command>
|
||||||
|
permission: lss.whitelist
|
||||||
|
permission-message: Du hast keine Berechtigung für diesen Befehl.
|
BIN
src/main/resources/server-icon.png
Normal file
BIN
src/main/resources/server-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
9
src/main/resources/wartung.yml
Normal file
9
src/main/resources/wartung.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
wartungsMotd: |
|
||||||
|
<b><gradient:#B19169:#7E6D5A> ʟᴇɢᴀᴄʏ ѕᴜʀᴠɪᴠᴀʟ</gradient></b>
|
||||||
|
<b><dark_red> ᴡᴀʀᴛᴜɴɢѕᴀʀʙᴇɪᴛᴇɴ!<dark_red><b>
|
||||||
|
kickMessage: |
|
||||||
|
<b><gradient:#B19169:#7E6D5A>ʟᴇɢᴀᴄʏ ѕᴜʀᴠɪᴠᴀʟ</gradient></b>
|
||||||
|
|
||||||
|
<red>Der Server befindet sich gerade in Wartungen!</red>
|
||||||
|
<red>Wir bitten um Verständnis.<red>
|
||||||
|
wartungsModus: false
|
10
src/main/resources/whitelist.yml
Normal file
10
src/main/resources/whitelist.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
whitelist:
|
||||||
|
|
||||||
|
# Nachricht, die angezeigt wird, wenn ein Spieler nicht auf der Whitelist ist
|
||||||
|
message: |
|
||||||
|
<b><gradient:#B19169:#7E6D5A>ʟᴇɢᴀᴄʏ ѕᴜʀᴠɪᴠᴀʟ</gradient></b>
|
||||||
|
|
||||||
|
<red>Du bist nicht auf der Teilnehmerliste!<red>
|
||||||
|
<red>Um dich auf die Whitelist setzen zu lassen, besuche unseren Discord:</red>
|
||||||
|
|
||||||
|
<green><underlined>https://discord.gg/ZdbRUR34E7</underlined></green>
|
Loading…
Reference in New Issue
Block a user