diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-25 01:53:23 +0100 |
commit | 44587e49ff1840219d9bc44844d4a3a6cd8ac5de (patch) | |
tree | 276ae9625795e9d79fc7db8592dbcb3a1af60928 /dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java | |
parent | 5e168847c2624b767deb9da310ecfdf169e0f43c (diff) |
Add dicore3-command
Diffstat (limited to 'dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java')
-rw-r--r-- | dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java new file mode 100644 index 0000000..f8ae713 --- /dev/null +++ b/dicore3/command/src/main/java/io/dico/dicore/command/chat/help/insertion/HelpComponentInserter.java @@ -0,0 +1,43 @@ +package io.dico.dicore.command.chat.help.insertion; + +import io.dico.dicore.command.ExecutionContext; +import io.dico.dicore.command.ICommandAddress; +import io.dico.dicore.command.chat.help.HelpTopicModifier; +import io.dico.dicore.command.chat.help.IHelpComponent; +import io.dico.dicore.command.chat.help.IHelpTopic; +import org.bukkit.permissions.Permissible; + +import java.util.ArrayList; +import java.util.List; + +public class HelpComponentInserter extends HelpTopicModifier { + private List<IInsertion> insertions = new ArrayList<>(); + + public HelpComponentInserter(IHelpTopic delegate) { + super(delegate); + } + + @Override + protected List<IHelpComponent> modify(List<IHelpComponent> components, ICommandAddress target, Permissible viewer, ExecutionContext context) { + int componentCount = components.size(); + + for (int i = insertions.size() - 1; i >= 0; i--) { + IInsertion insertion = insertions.get(i); + int idx = insertion.insertionIndex(components, target, viewer, context); + List<IHelpComponent> inserted = insertion.getComponents(target, viewer, context); + components.addAll(idx, inserted); + } + + return components; + } + + public HelpComponentInserter insert(IInsertionFunction insertionFunction, IHelpTopic helpTopic) { + return insert(Insertions.combine(helpTopic, insertionFunction)); + } + + public HelpComponentInserter insert(IInsertion insertion) { + insertions.add(insertion); + return this; + } + +} |