Class SecLoop
java.lang.Object
io.github.syst3ms.skriptparser.lang.Statement
io.github.syst3ms.skriptparser.lang.CodeSection
io.github.syst3ms.skriptparser.lang.lambda.ArgumentSection
io.github.syst3ms.skriptparser.sections.SecLoop
- All Implemented Interfaces:
Continuable, Finishing, SelfReferencing, SyntaxElement
This section iterates over all the values of the given expression, one by one.
One can also loop a certain amount of times instead. The looped expression will still be
valid in that case.
- Since:
- ALPHA
-
Field Summary
Fields inherited from class CodeSection
first, items, last -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidfinish()By convention, this method should be fired in one of the following occasions: The execution of the section is completely done and the (actual) next element is referenced to be walked on. This method is completely stopped by any means whatsoever. An example of this second occasion isEffContinuecontinuing over multiple loops.This statement returns itself as the next statement to run ingetNext().This function is called on the section where theEffContinueeffect will continue to, taking all Continuable sections into account.Expression<?> booleaninit(Expression<?>[] expressions, int matchedPattern, ParseContext parseContext) Initializes this SyntaxElement before being used.booleanloadSection(FileSection section, ParserState parserState, SkriptLogger logger) This methods determines the logic of what is being done to the elements inside of this section.Sets the Statement that is placed after this Statement in the file.toString(TriggerContext ctx, boolean debug) walk(TriggerContext ctx) By default, runsStatement.run(TriggerContext); returnsStatement.getNext()if it returns true, ornullotherwise.Methods inherited from class ArgumentSection
getArguments, setArguments, start, stepMethods inherited from class CodeSection
checkFinishing, checkFinishing, checkReturns, getAllowedSyntaxes, getFirst, getItems, getLast, isRestrictingExpressions, run, setItems
-
Constructor Details
-
SecLoop
public SecLoop()
-
-
Method Details
-
loadSection
Description copied from class:CodeSectionThis methods determines the logic of what is being done to the elements inside of this section. By default, this simply parses all items inside it, but this can be overridden. In case an extending class just needs to do some additional operations on top of what the default implementation already does, then callsuper.loadSection(section)before any such operations.- Overrides:
loadSectionin classCodeSection- Parameters:
section- theFileSectionrepresenting this CodeSectionlogger- the logger- Returns:
trueif the items inside of the section were loaded properly,falseif there was a problem
-
init
Description copied from interface:SyntaxElementInitializes this SyntaxElement before being used. This method is always called before all the others in an extending class, the only exception beingCodeSection.loadSection(FileSection, ParserState, SkriptLogger).- Specified by:
initin interfaceSyntaxElement- Parameters:
expressions- an array of expressions representing all the expressions that are being passed to this syntax element. As opposed to Skript, elements of this array can't benull.matchedPattern- the index of the pattern that was successfully matched. It corresponds to the order of the syntaxes in registrationparseContext- an object containing additional information about the parsing of this syntax element, like regex matches and parse marks- Returns:
trueif the syntax element was initialized successfully,falseotherwise.- See Also:
-
walk
Description copied from class:StatementBy default, runsStatement.run(TriggerContext); returnsStatement.getNext()if it returns true, ornullotherwise. Note that if this method is overridden, then the implementation of Statement.run(TriggerContext) doesn't matter.- Specified by:
walkin classCodeSection- Parameters:
ctx- the event- Returns:
- the next item to be ran, or
nullif this is the last item to be executed
-
setNext
Description copied from class:StatementSets the Statement that is placed after this Statement in the file. You can assume that the Statement.next statement of thenextparameter is known if it has such a statement. -
finish
public void finish()Description copied from interface:FinishingBy convention, this method should be fired in one of the following occasions:- The execution of the section is completely done and the (actual) next element is referenced to be walked on.
- This method is completely stopped by any means whatsoever.
EffContinuecontinuing over multiple loops. If that effect continues 3 loops in one go, this means that the 2 most inner-loops need to be completely reset, since they have the possibility to be looped over again. EffContinue therefore calls this method on those loops.
Another example isEffExit, which finishes every section that implements this interface, because of the same reasons specified above.- Specified by:
finishin interfaceFinishing- Overrides:
finishin classArgumentSection- See Also:
-
getContinued
Description copied from interface:ContinuableThis function is called on the section where theEffContinueeffect will continue to, taking all Continuable sections into account. Most of the time, this will just return the section it is referring to, but in rare cases, one might want to change this behaviour, hence this method.- Specified by:
getContinuedin interfaceContinuable- Parameters:
ctx- the context- Returns:
- the next statement
- See Also:
-
getActualNext
Description copied from interface:SelfReferencingThis statement returns itself as the next statement to run ingetNext().
This method will return the actual statement that follows this statement. This means, by convention, the next element that is not nested more than this statement.- Specified by:
getActualNextin interfaceSelfReferencing- Returns:
- the element that is actually after this section
-
toString
- Specified by:
toStringin interfaceSyntaxElement- Parameters:
ctx- the eventdebug- whether to show additional information or not- Returns:
- a
Stringthat should aim to resemble what is written in the script as closely as possible
-
getLoopedExpression
- Returns:
- the expression whose values this loop is iterating over
-