Class SecSwitch

All Implemented Interfaces:
Finishing, SyntaxElement

public class SecSwitch extends CodeSection implements Finishing
Basic switch control statement. Only case sections/effects are allowed within this section. The given expression will be matched against each case and all matching ones will be run. Note that unlike in Java, each case is run separately.
    switch (2) {
        case 1:
            print("Hello");
        case 2:
            print("World!");
            break;
        default:
            print("Nothing");
    }
Would result in the following Skript code:
    switch 2:
        case 1:
            print "Hello"
        case 1 or 2:
            print "World!"
        default:
            print "Nothing"
Note that the default part is only executed if no match was found.
Since:
ALPHA
See Also:
  • Constructor Details

    • SecSwitch

      public SecSwitch()
  • Method Details

    • init

      public boolean init(Expression<?>[] expressions, int matchedPattern, ParseContext parseContext)
      Description copied from interface: SyntaxElement
      Initializes this SyntaxElement before being used. This method is always called before all the others in an extending class, the only exception being CodeSection.loadSection(FileSection, ParserState, SkriptLogger).
      Specified by:
      init in interface SyntaxElement
      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 be null.
      matchedPattern - the index of the pattern that was successfully matched. It corresponds to the order of the syntaxes in registration
      parseContext - an object containing additional information about the parsing of this syntax element, like regex matches and parse marks
      Returns:
      true if the syntax element was initialized successfully, false otherwise.
      See Also:
    • walk

      public Optional<? extends Statement> walk(TriggerContext ctx)
      Description copied from class: Statement
      By default, runs Statement.run(TriggerContext) ; returns Statement.getNext() if it returns true, or null otherwise. Note that if this method is overridden, then the implementation of Statement.run(TriggerContext) doesn't matter.
      Specified by:
      walk in class CodeSection
      Parameters:
      ctx - the event
      Returns:
      the next item to be ran, or null if this is the last item to be executed
    • finish

      public void finish()
      Description copied from interface: Finishing
      By convention, this method should be fired in one of the following occasions:
      1. The execution of the section is completely done and the (actual) next element is referenced to be walked on.
      2. This method is completely stopped by any means whatsoever.
      An example of this second occasion is EffContinue continuing 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 is EffExit, which finishes every section that implements this interface, because of the same reasons specified above.
      Specified by:
      finish in interface Finishing
      See Also:
    • getAllowedSyntaxes

      protected Set<Class<? extends SyntaxElement>> getAllowedSyntaxes()
      Description copied from class: CodeSection
      A list of the classes of every syntax that is allowed to be used inside of this CodeSection. The default behavior is to return an empty list, which equates to no restrictions. If overridden, this allows the creation of specialized, DSL-like sections in which only select statements and other sections (and potentially, but not necessarily, expressions).
      Overrides:
      getAllowedSyntaxes in class CodeSection
      Returns:
      a list of the classes of each syntax allowed inside this CodeSection
      See Also:
    • toString

      public String toString(TriggerContext ctx, boolean debug)
      Specified by:
      toString in interface SyntaxElement
      Parameters:
      ctx - the event
      debug - whether to show additional information or not
      Returns:
      a String that should aim to resemble what is written in the script as closely as possible
    • getMatch

      public Expression<Object> getMatch()
    • getCases

      public List<SecCase> getCases()
    • getDefault

      public Optional<? extends Statement> getDefault()
    • setDefault

      public void setDefault(Statement byDefault)
    • isDone

      public boolean isDone()
    • setDone

      public void setDone(boolean isDone)