Add folter_opfer group

This commit is contained in:
marc-go
2026-02-03 19:49:48 +01:00
parent 81395f1c07
commit 9351f1569c
3 changed files with 92 additions and 1 deletions

View File

@@ -64,5 +64,11 @@
<version>1.21.10-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.luckperms</groupId>
<artifactId>api</artifactId>
<version>5.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@@ -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<LuckPerms> provider =
getServer().getServicesManager().getRegistration(LuckPerms.class);
if (provider == null) {
getLogger().severe("LuckPerms nicht gefunden!");
getServer().getPluginManager().disablePlugin(this);
return;
}
this.luckperms = provider.getProvider();
}
}

View File

@@ -3,6 +3,8 @@ version: '1.0-SNAPSHOT'
main: de.marc.folterkammer.folterplugin
api-version: '1.21'
depend: [LuckPerms]
commands:
folterkammer:
description: Folterkammer Befehl