Skip to content

Commit f080f81

Browse files
authored
fix(commands): propagate Essentials and module to tree nodes (#6445)
### What does this PR do? Fixes an issue where `EssentialsTreeNode` instances did not receive updated `Essentials` and `IEssentialsModule` references after registration. This could lead to null references during command execution, especially in test environments. ### Changes made - Override `setEssentials` in `EssentialsTreeCommand` - Override `setEssentialsModule` in `EssentialsTreeCommand` - Propagate updated references to all registered nodes ### Why is this needed? Nodes only received references during registration. If the parent command updated its references later, the nodes would retain outdated (null) values. ### Does this PR break compatibility? No.
1 parent 18549a7 commit f080f81

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsTreeCommand.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.earth2me.essentials.commands;
22

33
import com.earth2me.essentials.CommandSource;
4+
import com.earth2me.essentials.IEssentialsModule;
45
import com.earth2me.essentials.User;
6+
import net.ess3.api.IEssentials;
57
import org.bukkit.Server;
68

79
import java.util.ArrayList;
@@ -10,6 +12,7 @@
1012
import java.util.HashMap;
1113
import java.util.List;
1214
import java.util.Map;
15+
import java.util.HashSet;
1316

1417
public class EssentialsTreeCommand extends EssentialsCommand {
1518
private final Map<String, EssentialsTreeNode> nodes = new HashMap<>();
@@ -32,6 +35,22 @@ protected void registerNode(final EssentialsTreeNode node) {
3235
node.setParent(this);
3336
}
3437

38+
@Override
39+
public void setEssentials(final IEssentials ess) {
40+
super.setEssentials(ess);
41+
for (final EssentialsTreeNode node : new HashSet<>(nodes.values())) {
42+
node.setEssentials(ess);
43+
}
44+
}
45+
46+
@Override
47+
public void setEssentialsModule(final IEssentialsModule module) {
48+
super.setEssentialsModule(module);
49+
for (final EssentialsTreeNode node : new HashSet<>(nodes.values())) {
50+
node.setEssentialsModule(module);
51+
}
52+
}
53+
3554
public void runDefault(final User user, final String commandLabel) throws Exception {
3655
runDefault(user.getSource(), commandLabel);
3756
}

0 commit comments

Comments
 (0)