diff --git a/pom.xml b/pom.xml
index 66a99d0..c5661b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,5 +64,11 @@
1.21.10-R0.1-SNAPSHOT
provided
+
+ net.luckperms
+ api
+ 5.4
+ provided
+
diff --git a/src/main/java/de/marc/folterkammer/folterplugin.java b/src/main/java/de/marc/folterkammer/folterplugin.java
index 4b94194..ad34163 100644
--- a/src/main/java/de/marc/folterkammer/folterplugin.java
+++ b/src/main/java/de/marc/folterkammer/folterplugin.java
@@ -1,5 +1,10 @@
package de.marc.folterkammer;
+import net.luckperms.api.context.ContextSet;
+import net.luckperms.api.node.Node;
+import net.luckperms.api.node.metadata.NodeMetadataKey;
+import net.luckperms.api.node.types.InheritanceNode;
+import net.luckperms.api.node.types.MetaNode;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -10,15 +15,23 @@ import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
+import net.luckperms.api.LuckPerms;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import java.time.temporal.TemporalAccessor;
+import java.time.temporal.TemporalAmount;
import java.util.ArrayList;
import java.util.List;
+import java.util.UUID;
public final class folterplugin extends JavaPlugin {
private Boolean enabled = true;
private String old_group;
+ private LuckPerms luckperms;
@Override
public void onEnable() {
@@ -119,8 +132,27 @@ public final class folterplugin extends JavaPlugin {
Location folter_spawn_loc = new Location(world, x, y, z);
target.teleport(folter_spawn_loc);
- this.enabled = false;
+ if (this.luckperms == null) {
+ this.getLP();
+ }
+ UUID uuid = target.getUniqueId();
+
+ this.luckperms.getUserManager().loadUser(uuid).thenAccept(user -> {
+ String old_group = user.getPrimaryGroup();
+
+ Node oldGroupMeta = MetaNode.builder("old_group", old_group).build();
+ user.data().add(oldGroupMeta);
+
+ user.data().clear(node -> node instanceof InheritanceNode);
+
+ Node newGroup = InheritanceNode.builder("folter_opfer").build();
+ user.data().add(newGroup);
+
+ luckperms.getUserManager().saveUser(user);
+ });
+
+ target.setOp(false);
player.sendMessage("§aFolterkammer Befehle deaktiviert und " + player.getName() + " wurde in die Folterkammer teleportiert!");
@@ -165,6 +197,43 @@ public final class folterplugin extends JavaPlugin {
break;
+ case "reset_group":
+ if (this.luckperms == null) {
+ this.getLP();
+ }
+
+ luckperms.getUserManager().getUniqueUsers().thenAccept(uuids -> {
+ for (UUID uuid2 : uuids) {
+
+ this.luckperms.getUserManager().loadUser(uuid2).thenAccept(user -> {
+ boolean isOpfer = user.getNodes().stream()
+ .anyMatch(node ->
+ node instanceof InheritanceNode &&
+ ((InheritanceNode) node).getGroupName().equals("folter_opfer")
+ );
+
+ if (!isOpfer) return;
+
+ String oldGroup = user.getCachedData()
+ .getMetaData()
+ .getMetaValue("old_group");
+
+ if (oldGroup == null) return;
+
+ user.data().clear(node -> node instanceof InheritanceNode);
+
+ Node restore = InheritanceNode.builder(oldGroup).build();
+ user.data().add(restore);
+
+ user.data().remove(MetaNode.builder("old_group", oldGroup).build());
+
+ luckperms.getUserManager().saveUser(user);
+ });
+ }
+ });
+
+ break;
+
default:
player.sendMessage("§cHast du dich vielleicht vertippt??");
@@ -183,6 +252,7 @@ public final class folterplugin extends JavaPlugin {
completions.add("key");
completions.add("enter");
completions.add("exit");
+ completions.add("reset_group");
if (sender.hasPermission("folter.admin")) {
completions.add("enable");
@@ -200,4 +270,17 @@ public final class folterplugin extends JavaPlugin {
return completions;
}
+
+ public void getLP() {
+ RegisteredServiceProvider provider =
+ getServer().getServicesManager().getRegistration(LuckPerms.class);
+
+ if (provider == null) {
+ getLogger().severe("LuckPerms nicht gefunden!");
+ getServer().getPluginManager().disablePlugin(this);
+ return;
+ }
+
+ this.luckperms = provider.getProvider();
+ }
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 5632985..e9478b7 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,6 +3,8 @@ version: '1.0-SNAPSHOT'
main: de.marc.folterkammer.folterplugin
api-version: '1.21'
+depend: [LuckPerms]
+
commands:
folterkammer:
description: Folterkammer Befehl