From 4545bbffd95d27e4e72aaad1a481af9d91094a64 Mon Sep 17 00:00:00 2001 From: Luck Date: Fri, 21 Oct 2022 21:59:27 +0100 Subject: Fix exception from Forge permission registration (#255) --- .../me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'spark-forge/src') diff --git a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java index 56d30b7..a047538 100644 --- a/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java +++ b/spark-forge/src/main/java/me/lucko/spark/forge/plugin/ForgeServerSparkPlugin.java @@ -66,6 +66,7 @@ import net.minecraftforge.server.permission.nodes.PermissionTypes; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -127,7 +128,18 @@ public class ForgeServerSparkPlugin extends ForgeSparkPlugin implements Command< // register permissions with forge & keep a copy for lookup ImmutableMap.Builder> builder = ImmutableMap.builder(); + + Set alreadyRegistered = e.getNodes().stream() + .map(PermissionNode::getNodeName) + .collect(Collectors.toSet()); + for (String permission : permissions) { + // there's a weird bug where it seems that this listener can be called twice, causing an + // IllegalArgumentException to be thrown the second time e.addNodes is called. + if (alreadyRegistered.contains("spark." + permission)) { + continue; + } + PermissionNode node = new PermissionNode<>("spark", permission, PermissionTypes.BOOLEAN, defaultValue); e.addNodes(node); builder.put("spark." + permission, node); -- cgit