|
22 | 22 | import cloud.commandframework.execution.postprocessor.CommandPostprocessor;
|
23 | 23 | import cloud.commandframework.services.types.ConsumerService;
|
24 | 24 | import com.plotsquared.core.commands.CommandRequirement;
|
| 25 | +import com.plotsquared.core.commands.CommandRequirements; |
25 | 26 | import com.plotsquared.core.player.PlotPlayer;
|
26 | 27 | import org.checkerframework.checker.nullness.qual.NonNull;
|
27 | 28 |
|
28 |
| -import java.util.ArrayList; |
29 |
| -import java.util.Arrays; |
30 |
| -import java.util.Collection; |
31 |
| -import java.util.Objects; |
32 |
| - |
33 | 29 | /**
|
34 | 30 | * Processor that evaluates registered {@link CommandRequirement command requirements} before a command is executed.
|
35 | 31 | */
|
36 | 32 | public final class CommandRequirementPostprocessor implements CommandPostprocessor<PlotPlayer<?>> {
|
37 | 33 |
|
38 |
| - private final Collection<@NonNull CommandRequirement> requirements = new ArrayList<>(); |
39 |
| - |
40 |
| - /** |
41 |
| - * Requires a single requirement. |
42 |
| - * |
43 |
| - * @param requirement the requirement |
44 |
| - */ |
45 |
| - public void registerRequirement(final @NonNull CommandRequirement requirement) { |
46 |
| - this.requirements.add(Objects.requireNonNull(requirement, "requirement")); |
47 |
| - } |
48 |
| - |
49 |
| - /** |
50 |
| - * Registers the given {@code requirements}. |
51 |
| - * |
52 |
| - * @param requirements the requirements |
53 |
| - */ |
54 |
| - public void registerRequirements(final @NonNull Collection<@NonNull CommandRequirement> requirements) { |
55 |
| - requirements.forEach(this::registerRequirement); |
56 |
| - } |
57 |
| - |
58 |
| - /** |
59 |
| - * Registers the given {@code requirements}. |
60 |
| - * |
61 |
| - * @param requirements the requirements |
62 |
| - */ |
63 |
| - public void registerRequirements(final @NonNull CommandRequirement @NonNull... requirements) { |
64 |
| - this.registerRequirements(Arrays.asList(requirements)); |
65 |
| - } |
66 |
| - |
67 | 34 | @Override
|
68 | 35 | public void accept(final @NonNull CommandPostprocessingContext<PlotPlayer<?>> processingContext) {
|
69 |
| - for (final CommandRequirement requirement : this.requirements) { |
70 |
| - if (!processingContext.command().commandMeta().getOrDefault(requirement.key(), false)) { |
71 |
| - continue; |
72 |
| - } |
| 36 | + final CommandRequirements requirements = processingContext.command().commandMeta().getOrDefault( |
| 37 | + CommandRequirements.REQUIREMENTS_KEY, |
| 38 | + null |
| 39 | + ); |
| 40 | + if (requirements == null) { |
| 41 | + return; |
| 42 | + } |
| 43 | + for (final CommandRequirement requirement : requirements) { |
73 | 44 | if (requirement.evaluate(processingContext.commandContext())) {
|
74 | 45 | continue;
|
75 | 46 | }
|
76 |
| - processingContext.commandContext().sender().sendMessage(requirement.failureCaption()); |
| 47 | + processingContext.commandContext().sender().sendMessage(requirement.failureCaption(), requirement.tagResolvers()); |
77 | 48 | // Not allowed :(
|
78 | 49 | ConsumerService.interrupt();
|
79 | 50 | }
|
|
0 commit comments