Class Skript

java.lang.Object
org.bukkit.plugin.PluginBase
org.bukkit.plugin.java.JavaPlugin
ch.njol.skript.Skript
All Implemented Interfaces:
io.papermc.paper.plugin.lifecycle.event.LifecycleEventOwner, org.bukkit.command.CommandExecutor, org.bukkit.command.TabCompleter, org.bukkit.command.TabExecutor, org.bukkit.event.Listener, org.bukkit.plugin.Plugin

public final class Skript extends org.bukkit.plugin.java.JavaPlugin implements org.bukkit.event.Listener
Skript - A Bukkit plugin to modify how Minecraft behaves without having to write a single line of code (You'll likely be writing some code though if you're reading this =P)

Use this class to extend this plugin's functionality by adding more conditions, effects, expressions, etc.

If your plugin.yml contains 'depend: [Skript]' then your plugin will not start at all if Skript is not present. Add 'softdepend: [Skript]' to your plugin.yml if you want your plugin to work even if Skript isn't present, but want to make sure that Skript gets loaded before your plugin.

If you use 'softdepend' you can test whether Skript is loaded with 'Bukkit.getPluginManager().getPlugin("Skript") != null'

Once you made sure that Skript is loaded you can use Skript.getInstance() whenever you need a reference to the plugin, but you likely won't need it since all API methods are static.

See Also:
  • Field Details

    • m_invalid_reload

      public static final Message m_invalid_reload
    • m_finished_loading

      public static final Message m_finished_loading
    • m_no_errors

      public static final Message m_no_errors
    • m_no_scripts

      public static final Message m_no_scripts
    • SCRIPTSFOLDER

      public static final String SCRIPTSFOLDER
      See Also:
    • EPSILON

      public static final double EPSILON
      A small value, useful for comparing doubles or floats.

      E.g. to test whether two floating-point numbers are equal:

       Math.abs(a - b) < Skript.EPSILON
       
      or whether a location is within a specific radius of another location:
       location.distanceSquared(center) - radius * radius < Skript.EPSILON
       
      See Also:
    • EPSILON_MULT

      public static final double EPSILON_MULT
      A value a bit larger than 1
      See Also:
    • MAXBLOCKID

      public static final int MAXBLOCKID
      The maximum ID a block can have in Minecraft.
      See Also:
    • MAXDATAVALUE

      public static final int MAXDATAVALUE
      The maximum data value of Minecraft, i.e. Short.MAX_VALUE - Short.MIN_VALUE.
      See Also:
    • UEH

      public static final Thread.UncaughtExceptionHandler UEH
  • Constructor Details

  • Method Details

    • getInstance

      public static Skript getInstance()
    • updateMinecraftVersion

      public static void updateMinecraftVersion()
      Check minecraft version and assign it to minecraftVersion field This method is created to update MC version before onEnable method To fix Utils.HEX_SUPPORTED being assigned before minecraftVersion is properly assigned
    • getVersion

      public static Version getVersion()
    • getServerPlatform

      public static ServerPlatform getServerPlatform()
    • isHookEnabled

      public static boolean isHookEnabled(Class<? extends ch.njol.skript.hooks.Hook<?>> hook)
      Checks whether a hook has been enabled.
      Parameters:
      hook - The hook to check.
      Returns:
      Whether the hook is enabled.
      See Also:
    • isFinishedLoadingHooks

      public static boolean isFinishedLoadingHooks()
      Returns:
      whether hooks have been loaded, and if disableHookRegistration(Class[]) won't error because of this.
    • disableHookRegistration

      @SafeVarargs public static void disableHookRegistration(Class<? extends ch.njol.skript.hooks.Hook<?>>... hooks)
      Disables the registration for the given hook classes. If Skript has been enabled, this method will throw an API exception. It should be used in something like JavaPlugin.onLoad().
      Parameters:
      hooks - The hooks to disable the registration of.
      See Also:
    • experiments

      public static ExperimentRegistry experiments()
      Returns:
      The manager for experimental, optional features.
    • getScriptsFolder

      public File getScriptsFolder()
      Returns:
      The folder containing all Scripts.
    • onEnable

      public void onEnable()
      Specified by:
      onEnable in interface org.bukkit.plugin.Plugin
      Overrides:
      onEnable in class org.bukkit.plugin.java.JavaPlugin
    • getMinecraftVersion

      public static Version getMinecraftVersion()
    • isRunningCraftBukkit

      public static boolean isRunningCraftBukkit()
      Returns:
      Whether this server is running CraftBukkit
    • isRunningMinecraft

      public static boolean isRunningMinecraft(int major, int minor)
      Returns:
      Whether this server is running Minecraft major.minor or higher
    • isRunningMinecraft

      public static boolean isRunningMinecraft(int major, int minor, int revision)
    • isRunningMinecraft

      public static boolean isRunningMinecraft(Version v)
    • supports

      @Deprecated public static boolean supports(String className)
      Deprecated.
      Used to test whether certain Bukkit features are supported.
      Parameters:
      className -
      Returns:
      Whether the given class exists.
    • classExists

      public static boolean classExists(String className)
      Tests whether a given class exists in the classpath.
      Parameters:
      className - The canonical name of the class
      Returns:
      Whether the given class exists.
    • methodExists

      public static boolean methodExists(Class<?> c, String methodName, Class<?>... parameterTypes)
      Tests whether a method exists in the given class.
      Parameters:
      c - The class
      methodName - The name of the method
      parameterTypes - The parameter types of the method
      Returns:
      Whether the given method exists.
    • methodExists

      public static boolean methodExists(Class<?> c, String methodName, Class<?>[] parameterTypes, Class<?> returnType)
      Tests whether a method exists in the given class, and whether the return type matches the expected one.

      Note that this method doesn't work properly if multiple methods with the same name and parameters exist but have different return types.

      Parameters:
      c - The class
      methodName - The name of the method
      parameterTypes - The parameter types of the method
      returnType - The expected return type
      Returns:
      Whether the given method exists.
    • fieldExists

      public static boolean fieldExists(Class<?> c, String fieldName)
      Tests whether a field exists in the given class.
      Parameters:
      c - The class
      fieldName - The name of the field
      Returns:
      Whether the given field exists.
    • getMetrics

      @Nullable public static @Nullable org.bstats.bukkit.Metrics getMetrics()
    • closeOnDisable

      public static void closeOnDisable(Closeable closeable)
      Registers a Closeable that should be closed when this plugin is disabled.

      All registered Closeables will be closed after all scripts have been stopped.

      Parameters:
      closeable -
    • onPluginDisable

      public void onPluginDisable(org.bukkit.event.server.PluginDisableEvent event)
    • onDisable

      public void onDisable()
      Specified by:
      onDisable in interface org.bukkit.plugin.Plugin
      Overrides:
      onDisable in class org.bukkit.plugin.java.JavaPlugin
    • outdatedError

      public static void outdatedError()
    • outdatedError

      public static void outdatedError(Exception e)
    • toString

      public static String toString(double n)
    • newThread

      public static Thread newThread(Runnable r, String name)
      Creates a new Thread and sets its UncaughtExceptionHandler. The Thread is not started automatically.
    • isAcceptRegistrations

      public static boolean isAcceptRegistrations()
    • checkAcceptRegistrations

      public static void checkAcceptRegistrations()
    • registerAddon

      public static SkriptAddon registerAddon(org.bukkit.plugin.java.JavaPlugin p)
      Registers an addon to Skript. This is currently not required for addons to work, but the returned SkriptAddon provides useful methods for registering syntax elements and adding new strings to Skript's localization system (e.g. the required "types.[type]" strings for registered classes).
      Parameters:
      p - The plugin
    • getAddon

      @Nullable public static @Nullable SkriptAddon getAddon(org.bukkit.plugin.java.JavaPlugin p)
    • getAddon

      @Nullable public static @Nullable SkriptAddon getAddon(String name)
    • getAddons

      public static Collection<SkriptAddon> getAddons()
    • getAddonInstance

      public static SkriptAddon getAddonInstance()
      Returns:
      A SkriptAddon representing Skript.
    • registerCondition

      public static <E extends Condition> void registerCondition(Class<E> condition, String... patterns) throws IllegalArgumentException
      registers a Condition.
      Parameters:
      condition - The condition's class
      patterns - Skript patterns to match this condition
      Throws:
      IllegalArgumentException
    • registerEffect

      public static <E extends Effect> void registerEffect(Class<E> effect, String... patterns) throws IllegalArgumentException
      Registers an Effect.
      Parameters:
      effect - The effect's class
      patterns - Skript patterns to match this effect
      Throws:
      IllegalArgumentException
    • registerSection

      public static <E extends Section> void registerSection(Class<E> section, String... patterns) throws IllegalArgumentException
      Registers a Section.
      Parameters:
      section - The section's class
      patterns - Skript patterns to match this section
      Throws:
      IllegalArgumentException
      See Also:
    • getStatements

      public static Collection<SyntaxElementInfo<? extends Statement>> getStatements()
    • getConditions

      public static Collection<SyntaxElementInfo<? extends Condition>> getConditions()
    • getEffects

      public static Collection<SyntaxElementInfo<? extends Effect>> getEffects()
    • getSections

      public static Collection<SyntaxElementInfo<? extends Section>> getSections()
    • registerExpression

      public static <E extends Expression<T>, T> void registerExpression(Class<E> c, Class<T> returnType, ExpressionType type, String... patterns) throws IllegalArgumentException
      Registers an expression.
      Parameters:
      c - The expression's class
      returnType - The superclass of all values returned by the expression
      type - The expression's type. This is used to determine in which order to try to parse expressions.
      patterns - Skript patterns that match this expression
      Throws:
      IllegalArgumentException - if returnType is not a normal class
    • getExpressions

      public static Iterator<ExpressionInfo<?,?>> getExpressions()
    • getExpressions

      public static Iterator<ExpressionInfo<?,?>> getExpressions(Class<?>... returnTypes)
    • registerEvent

      public static <E extends SkriptEvent> SkriptEventInfo<E> registerEvent(String name, Class<E> c, Class<? extends org.bukkit.event.Event> event, String... patterns)
      Registers an event.
      Parameters:
      name - Capitalised name of the event without leading "On" which is added automatically (Start the name with an asterisk to prevent this). Used for error messages and the documentation.
      c - The event's class
      event - The Bukkit event this event applies to
      patterns - Skript patterns to match this event
      Returns:
      A SkriptEventInfo representing the registered event. Used to generate Skript's documentation.
    • registerEvent

      public static <E extends SkriptEvent> SkriptEventInfo<E> registerEvent(String name, Class<E> c, Class<? extends org.bukkit.event.Event>[] events, String... patterns)
      Registers an event.
      Parameters:
      name - The name of the event, used for error messages
      c - The event's class
      events - The Bukkit events this event applies to
      patterns - Skript patterns to match this event
      Returns:
      A SkriptEventInfo representing the registered event. Used to generate Skript's documentation.
    • registerStructure

      public static <E extends Structure> void registerStructure(Class<E> c, String... patterns)
    • registerSimpleStructure

      public static <E extends Structure> void registerSimpleStructure(Class<E> c, String... patterns)
    • registerStructure

      public static <E extends Structure> void registerStructure(Class<E> c, EntryValidator entryValidator, String... patterns)
    • getEvents

      public static Collection<SkriptEventInfo<?>> getEvents()
    • getStructures

      public static List<StructureInfo<? extends Structure>> getStructures()
    • dispatchCommand

      public static boolean dispatchCommand(org.bukkit.command.CommandSender sender, String command)
      Dispatches a command with calling command events
      Parameters:
      sender -
      command -
      Returns:
      Whether the command was run
    • logNormal

      public static boolean logNormal()
    • logHigh

      public static boolean logHigh()
    • logVeryHigh

      public static boolean logVeryHigh()
    • debug

      public static boolean debug()
    • testing

      public static boolean testing()
    • log

      public static boolean log(Verbosity minVerb)
    • debug

      public static void debug(String info)
    • info

      public static void info(String info)
      See Also:
    • warning

      public static void warning(String warning)
      See Also:
    • error

      public static void error(@Nullable @Nullable String error)
      See Also:
    • error

      public static void error(String error, ErrorQuality quality)
      Use this in SyntaxElement.init(Expression[], int, Kleenean, ch.njol.skript.lang.SkriptParser.ParseResult) (and other methods that are called during the parsing) to log errors with a specific ErrorQuality.
      Parameters:
      error -
      quality -
    • exception

      public static EmptyStacktraceException exception(String... info)
      Used if something happens that shouldn't happen
      Parameters:
      info - Description of the error and additional information
      Returns:
      an EmptyStacktraceException to throw if code execution should terminate.
    • exception

      public static EmptyStacktraceException exception(@Nullable @Nullable Throwable cause, String... info)
    • exception

      public static EmptyStacktraceException exception(@Nullable @Nullable Throwable cause, @Nullable @Nullable Thread thread, String... info)
    • exception

      public static EmptyStacktraceException exception(@Nullable @Nullable Throwable cause, @Nullable @Nullable TriggerItem item, String... info)
    • markErrored

      public static void markErrored()
      Mark that an exception has occurred at some point during runtime. Only used for Skript's testing system.
    • exception

      public static EmptyStacktraceException exception(@Nullable @Nullable Throwable cause, @Nullable @Nullable Thread thread, @Nullable @Nullable TriggerItem item, String... info)
      Used if something happens that shouldn't happen
      Parameters:
      cause - exception that shouldn't occur
      info - Description of the error and additional information
      Returns:
      an EmptyStacktraceException to throw if code execution should terminate.
    • getSkriptPrefix

      public static String getSkriptPrefix()
    • info

      public static void info(org.bukkit.command.CommandSender sender, String info)
    • broadcast

      public static void broadcast(String message, String permission)
      Parameters:
      message -
      permission -
      See Also:
    • adminBroadcast

      public static void adminBroadcast(String message)
    • message

      public static void message(org.bukkit.command.CommandSender sender, String info)
      Similar to info(CommandSender, String) but no [Skript] prefix is added.
      Parameters:
      sender -
      info -
    • error

      public static void error(org.bukkit.command.CommandSender sender, String error)
    • getUpdater

      @Nullable public @Nullable SkriptUpdater getUpdater()
      Gets the updater instance currently used by Skript.
      Returns:
      SkriptUpdater instance.