SkQuery by btk5h

The original Skript Addon.

















Bug fixes 353 days, 16 hours and 24 minutes ago

- Changed how the health scale works, to not be doubling the value anymore. (Closes
- The `@noupdate::` block set effect was not registering, most likely due to the new markers in newer Skript versions. Added `set %blocks% to %itemtypes% with no [block] update` to allow this syntax to work again. (Closes
- Fixed an issue collecting the ParserInstance in newer Skript versions. (Closes
- Removed the pathfinding syntax. It's in vanilla Skript now.

View Update

4.1.9 485 days, 9 hours and 23 minutes ago

- Updates to latest Spigot 1.19.4 and Skript 2.7.0-beta2
- Removes moon phase expression. It's in Skript now.

View Update

Bug fixes 585 days, 10 hours and 54 minutes ago

Fixed a bug where if the provided world border was null, it would error, also updated library and latest 1.19.3

View Update

2.6.3 Skript update 737 days, 4 hours and 10 minutes ago

Updated to latest Skript 2.6.3
Updated to Spigot 1.19

View Update

1.18.1 and Skript 2.6.1 support 907 days, 14 hours and 59 minutes ago

Updated all libraries; Skript 2.6.1, Minecraft 1.18.1 and Shadow gradle.
Removed new uuid expression as it's in Skript now.
Fixed a debug error happening with the world border size expression.

Due to how Skript is removing versions equal and older than 1.12 and Mojang requiring latest Java versions. Backwards support for older versions is getting harder and harder, so the following will now apply;

Latest 4.1.6+ version only works with Skript 2.6.1+ and was compiled in Java 17 (MC 1.13+). If you're running 1.9-1.12 use SkQuery version 4.1.4. If you're running 1.13+ and have Java 17 use this version, if you are still using anything between Java 11 and Java 16 use version 4.1.5 or upgrade to Java 17. Click "Version History" tab to view older versions.

View Update

Update to Skript 2.6 1155 days, 16 hours and 18 minutes ago

This release only works with Skript 2.6+

- Updated to Skript 2.6-alpha1. Please make any bug reports regarding Skript in the SkriptLang issue tracker at
- Updated to 1.16.5

- Removed health gain reason. It's in Skript now.
- Removed server list ping expressions. They're in Skript now.
- Removed recipes, SkQuery never had a good implementation of them.
- Fully removed custom syntax things. List here

View Update

Bug fixes + force sleep effect 1374 days, 11 hours and 51 minutes ago

  • Removed custom events, expressions, property expression, and functions. These features were experimental and you should be using Skript's built in functions over SkQuery's implementation.
  • Bandage patch for recipes throwing a deprecated warning. I would highly suggest using another addon that handles recipes better over SkQuery. I will not be remaking the recipe system in SkQuery at this time.
  • Added a new syntax to force sleeping at a bed location (make|force) %player% [to] sleep at %location%
  • Recoded the item projectile syntax
  • Item projectile syntax now allows for multiple entities to fire at the same time.
  • Adapted the item projectile system to use ItemType over ItemStack. This may improve correct aliases lookup in older versions of Skript and/or Minecraft versions.
  • Updated some libraries

Please post bug reports at

View Update

Bug fixes 1447 days, 7 hours and 9 minutes ago

- Fixed a bug where initialization of a class from some unknown library the user had, would cause SkQuery to not load. (#49 Thanks Qfrijters)
- Fixed a bug where SkQuery was checking a nulled value about MySQL credentials. (#47 Thanks Creaous)

Report bugs at

View Update

4.1.2 1637 days, 4 hours and 55 minutes ago

- Updated the midi player to have the new 1.14.2 noteblock sounds.
- Fixed a bug on 1.12 that caused falling blocks to not work properly. (#25 Thanks Govindass)
- Updated to 1.15.2.
- Fixed some world border syntax, and also adjusted the stop midi effect to allow multiple entries.

View Update

Fixed size of conflict 1837 days, 1 hour and 43 minutes ago

Fixed a conflict between size of %objects% of Skript and the new WorldBorder size expression.

This is because Skript's accepts all objects, and that's not something that is friendly to other syntaxes. The new syntax is

(size|diameter) of world[ ]border[s] %worldborders% [over [a [(time|period) of]] %-timespan%]

Thanks aeonlamb (#16)

View Update

SkQuery 4-pre1 and 4-pre2 additions. 1837 days, 8 hours and 6 minutes ago

Welcome to SkQuery 4.1, this is the complete SkQuery story, adding all elements from the SkQuery 4 (pre1 and pre2) (Except Advancements and Npcs (Ok it's hard to maintain NMS)).


  • Added the ability for Tab Completions to work regardless of their capitalization. (Thanks PanGargamel #12)
  • Added Expression to get characters at indices from strings:
    • char[acter][s] at [index] %numbers% (within|in) %strings%

  • Added inventory name event expression:
    • inventory name

    • Example:
      on inventory click:
      broadcast "%inventory name%"

  • Added WorldBorder expressions. Type name: worldborder
    • World border center:
      • center of [world[ ]border[s]] %worldborders%

        %worldborders%'[s] [world[ ]border[s]] center

  • World border time:
    • warning time of [world[ ]border[s]] %worldborders%

      %worldborders%'[s] [world[ ]border[s]] warning time

  • World border distance:
    • warning distance of [world[ ]border[s]] %worldborders%

      %worldborders%'[s] [world[ ]border[s]] warning distance

  • World border damage amount:
    • damage [amount] of [world[ ]border[s]] %worldborders%

      %worldborders%'[s] [world[ ]border[s]] damage [amount]

  • World border damage buffer:
    • [damage] buffer of [world[ ]border[s]] %worldborders%

      %worldborders%'[s] [world[ ]border[s]] [damage] buffer

  • World border size:
    • (size|diameter) [over [a [(time|period) of]] %-timespan%] of [world[ ]border[s]] %worldborders%

      %worldborders%'[s] [world[ ]border[s]] (size|diameter) [over [a [(time|period) of]] %-timespan%]

  • Added WorldBorder locations within condition:
    • %locations% is [with]in [world[ ]border[s]] %worldborder%

      %locations% (isn't|is not) [with]in [world[ ]border[s]] %worldborder%

  • Added trail projectile:
    • Can only be used within the on shoot event
    • Data's aren't supported because the VisualEffect isn't accessible without parsing an expression to addons, and I haven't made a particle library yet.

    • trail projectile with %particles%

  • Fixed "Entity has potioneffect" condition to support multiples:
    • Before:
      %livingentity% (has|have) %potioneffecttype%

      %livingentities% does(n't| not) (has|have) %potioneffecttype%
    • After:
      %livingentities% (has|have) [potion [effect]] %potioneffecttypes%

      %livingentities% (doesn't|does not|do not|don't) have [potion [effect]] %potioneffecttypes%

  • Fixed Divisible condition to support multiples:
    • Before:
      %number% is divisible by %number%

      %number% is not divisible by %number%

    • After:

      %numbers% (is|are) divisible by %number%

      %number% (isn't|is not|aren't|are not) divisible by %number%

  • Fixed Prime condition to support multiples:
    • Before:
      %number% is [a] prime [number]

      %number% %number% is not [a] prime [number]

    • After:
      %numbers% (is|are) [a] prime [number]

      %numbers% (isn't|is not|aren't|are not) [a] prime [number]

  • Fixed a syntax mistake where "not" in:
    %itemtype% (isn't|is not) not [a] block

    • should be:
      %itemtype% (isn't|is not) [a] block

    • My guess is that this has always existed in SkQuery.

  • Fixed inventory name in 1.13+ with some changes to how you are going to be able to get it.
    • So in 1.13+ Spigot removed the ability to get the title of inventories, unless they're a container or an InventoryView.
    • Meaning SkQuery can only implement those ways, so the new ways to get the inventory name are the event value "inventory name" within the inventory click event.
    • Example:
      on inventory click:
      event-inventory is not player's inventory
      inventory name is "example"
      cancel event

    • The other way it's implemented is if the inventory has a holder aka a container being a block:
      on block break:
      if inventory name of inventory of event-block is "example":
      cancel event

    • Keep in mind doing name of %inventories% will go to Skript in which the newest Skript versions just outright removed the ability to grab the name.
      • So be advised it's not SkQuery not working if you don't add inventory name before.

    • Using the inventory name expression in versions lower than <1.13 will act normal prior to this update.
    • This should still work assuming it's the event-inventory in an inventory click event as well:
      on inventory click:
      event-inventory is not player's inventory
      broadcast inventory name
      broadcast inventory name of event-inventory

    • It's a bad way to check inventories against their name, so as an alternative you can add a player to a variable list:
      on script unload:
      delete {inventories::temp::*}

      command /example:
      set {_inventory} to chest with 2 rows named "example"
      set slots 4 and 13 of {_inventory} to light green stained glass pane named "&bSkQuery" with lore "&2&lLine 1" and "&6Line 2"
      add player to {inventories::temp::example-opened::*}
      open {_inventory} to player

      on inventory click:
      event-inventory is not player's inventory
      broadcast inventory name
      broadcast inventory name of event-inventory
      {inventories::temp::example-opened::*} contains player
      cancel event
      if index of clicked slot is 4 or 13:
      broadcast "&bYou clicked the SkQuery example."

      on inventory close:
      remove player from {inventories::temp::example-opened::*}

      on disconnect:
      remove player from {inventories::temp::example-opened::*}

Hope you enjoyed this semi-big update. Let us know if you find any bugs at

If you're a developer and wanna contribute to SkQuery you can do so at our repo

Version naming is 4.1 as 4 already exists and this includes all of v4 which wasn't that much to be honest. Most of it is in vanilla Skript now.


View Update

Fixed bug in looping blocks of a cube 1907 days, 21 hours and 27 minutes ago

Fixed bug in looping blocks of a cube

View Update

Bug fixes and removals 1927 days, 13 hours and 45 minutes ago

  • Removed fireworks, I added them to Vanila Skript. (Pop firework still exists though as that's reflection)
  • Removed BookOf expression, it generated a book by string, it was a dumb implementation. Books are in Vanila Skript now.
  • Removed SkQuery version expression, not needed.
  • Fixed Skript 2.3 color issues.

Started experimental documentation

SkQuery is now a Github organization, report bugs here

View Update

1.13 update and Midi revamp 1978 days, 22 hours and 26 minutes ago


  • Midi is playing condition;

midi [ids] %strings% (are|is) playing

midi [ids] %strings% (are|is)(n't| not) playing

  • Location is within now accepts multiple locations;

%locations% (is|are) within %location% (to|and) %location%

%locations% (are|is)(n't| not) within %location% (to|and) %location%

  • Revamped the whole Midi system, made it sound better, use 1.12 sounds, and performance boost (Will default to 1.8 sounds when 1.8-1.11 is installed)

  • Added a Util class for maintaining 1.9+ support

  • A null pointer in the Yaml.
  • A null pointer in the Midi system
  • 1.13 sounds and deprecated methods not working.
  • Changed some deprecated methods to work for both those deprecated methods and new methods in case the user is either running on 1.8 or 1.13+
  • Fixed the stop midi effect not working sometimes.
  • Fixed 1.13 issues with Materials.

  • Removed the old v1 Visualizer system (Not Format slot, that's v2)
  • Moved all custom util classes into just utils.

Please report bugs at
Otherwise myself or other developers will never see the bug report or forget.

I love SkQuery's Midi system way more than NoteBlockAPI to be honest. Always have, always will, sounds much better.

Video demo of the new Midi system;

View Update

Recode and 2.3 Skript 2058 days, 7 hours and 15 minutes ago

This version of SkQuery has about 30% of it's code rewritten for better performance. This version has the removal of lore because it collided with vanilla Skript 2.3 versions as it has a lore now. This version is designed to only work with 2.3+ Skript builds.

Let me know if you run into any issues, other than lore, if you run into issues with lore report it on the Skript issue tracker.

View Update

Code clean and client sign effect fix. 2180 days and 3 minutes ago

It has been awhile since I posted an update for SkQuery, there hasn't been any issues with it, so there is no need to post an update.

A user recently reported that the client sign effect doesn't work, so I fix it and here is that version.

I only have three plans for this fork at the moment.

1.) Re-add all the stuff that was removed over the course of this and Gatt's fork.
2.) Code clean
3.) 1.13 support.

I have done a bit of code clean in the whole system of registering and lots of other places, I can't remember any changes either since it's been so long, no new stuff, all internals.

And lastly, when 1.13 Skript comes out, I will be sure to keep this updated as so many people use it. Thanks again.

View Update

Updates 2440 days, 15 hours and 28 minutes ago


  • Some compare classes not working in some cases.
  • Some null pointers
  • Fixed up some Lamba things
  • Changed how some things work, no noticeable difference.

  • A DEV_LIME boolean field for developers to tell if the server is running this fork.
  • A DISABLE_YAML boolean field for developers to disable SkQuery's yaml. Skellett uses this.
  • A method to disable the Yaml of SkQuery. SkQuery.disableYaml(boolean)
  • All these above are in the SkQuery.class
  • Added the ability to control Lamba's internally better (Developers addition)
  • Added a for each effect. This allows you to do multiple things with a lamba and lists
    %objects% for each %lambda%


    %objects% where %predicate% for each %lambda% respectively

    The respectively makes the effect run double/triple/quad/infinite condition and effects simultaneously. So if the first lamba condition is true, it will run the first lamba effect. If the seventh lamba condition is true, it will run the seventh lamba effect etc.
  • Added beta testing lamba expressions. Was playing around with these. They shouldn't interfere or be visibly usable at the moment.
  • Re-added MySQL options and stuff for the time being. Revamping this later in it's own addon maybe.


function getConnectedBlocks(block: block):
add {_block} to {return::*}
loop all blocks in radius 1 around location of {_block} where [type of block input is type of {_block}]->[{return::*} doesn't contain block input]:
add loop-value to {return::*}
command /replace <item> <number> <item>:
set {_now} to now
getConnectedBlocks(target block)
{return::*} where [chance of argument 2%] for each [set block at block input to argument 1]->[set block above block input to argument 3]
broadcast "%difference between now and {_now}%"
delete {return::*}
command /change <item>:
set {_now} to now
getConnectedBlocks(target block)
{return::*} for each [set block at block input to argument]->[set block above block input to argument]
broadcast "%difference between now and {_now}%"
delete {return::*}
command /test:
"this", "test.", "test2.", "is" and "dope" where [string input doesn't contain "."] for each [set string input to "&6%string input%"]->[broadcast "%string input% + %loop input%"]
command /assigner:
all players where [size of {team::red::*} > {team::blue::*}]->[size of {team::blue::*} > {team::red::*}] for each [broadcast "&c&l%player input% is now on blue"]->[broadcast "&c&l%player input% is now on red"] respectively


The last respectively syntax adds the player to red if it's low or adds them to blue if the team is low occupied. I can help people understand the for each more if you PM me on SkUnity, Spigot or Discord, or you can just tag me.

This is probably the last update for awhile until 1.13 breaks this addon.

View Update

Newest Skript version error 2459 days, 15 hours and 12 minutes ago

Fixed an error that crashed SkQuery with latest Bensku's edit dev-32. I predicted this was going to happen so I had this made for myself awhile ago.

View Update

Hot addition 2573 days, 5 hours and 3 minutes ago

  • Added the ability to get the number/integer input of the "evaluate lamba" effect from the last update.

do 5 times [broadcast "This is the %number input% loop"]

P.S: If anyone wants the Lamba hotfix for Skript-Mirror users. Just PM me for that fix of this build.

View Update

Revival of pop firework, bug fixes and improvements. 2573 days, 5 hours and 22 minutes ago


  • Fixed some minor bugs.
  • Fixed some null pointers.

  • Updated the main thread with more info about the build.

  • Fixed pop firework (Not client side anymore) but works.

#Changed syntax from
pop %fireworkeffects% at %locations% to %players%


(detonate|pop) %fireworkeffects% at %locations%

  • Added some fixes/improvements from VirusTotal's edit.
  • Added the ability for the "evaluate lamba" to execute multiple times.

do [%-number% time[s]] %lambda%

do [broadcast "message 1 time"]

do 5 times [broadcast "message 5 times"]

pop ball large firework coloured red at player's location

pop ball firework coloured blue, yellow and light green at player

View Update

Bug fixes, Where filter and past movement 2590 days, 1 hour and 57 minutes ago

- Added former movement location. Uses the getFrom() in the on any movement that never existed.

([the] (past|former) move[ment] [location]

- Added settable relative option to the time relative syntax.
(relative|player) time of %player% [with relative %-boolean%]


%player%'s (relative|player) time [with relative %-boolean%]

- Fixed Time Relative throwing null when trying to reset
- Fixed the where filter expression not working. (Throws some errors if the predicate contains an unknown expression/value. Looking into fixing that.)
- Fixed some minor bugs.

Example script:

function isInSwamp(p: player):
loop all players where [distance between {location} and {_p} <= 10]:
message "&2Get out of my Swamp!" to loop-player
command /where:
loop all players where [player input is "LimeGlass" parsed as player]:
message "&aOh hi there Lime" to loop-player
function flyingEntities(empty: boolean = false) :: entities:
return all entities where [ground state of entity input is false]
function betterContains(objects: objects, contains: object) :: boolean:
if {_objects::*} where [object input is {_object}] is empty:
return false
return true
command /test:
set {_objects::*} to "Stuff", "Test", "Skript" and "Testing"
if betterContains({_objects::*}, "Testing") is true:
broadcast "yes"
broadcast "no"

View Update

Fireworks are finally restored! 2606 days, 13 hours and 36 minutes ago

Fixed the fireworks system not working at all since Gatt's 1.9 SkQuery edit.

Added colour support to the firework syntax. For everyone not American xD

Fixed some minor bugs.

Modified Syntax:

#Main launch effect:
(launch|deploy) %firework effects% at %locations% (with duration|timed) %number%

#%firework effect%:
(1¦|2¦flickering |3¦trailing |4¦flickering trailing |5¦trailing flickering )%firework type% [firework] [effect] colored %colors%

(1¦|2¦flickering |3¦trailing |4¦flickering trailing |5¦trailing flickering )%firework type% [firework] [effect] colored %colors% fad(e|ing) [to] %colors%

#%firework types%:
ball, ball large, burst, creeper, star

Firework examples:
command /fireworks:
launch flickering ball firework colored red at player's location timed 0
wait a second
launch trailing ball large coloured red, blue and green at player's location timed 1
wait a second
launch flickering trailing creeper coloured green fading to red, black and green at player's location timed 1
wait a second
launch trailing flickering star coloured purple and red fading to pink at player's location timed 1

View Update

Added metrics 2676 days, 5 hours and 26 minutes ago


make %livingentities% pathfind to %location% with speed %number%
make %livingentities% pathfind to %location% (with|at) speed %number%

- Metrics


- Some minor bugs

View Update

Stop midi 2708 days and 5 hours ago

Added the ability to stop a midi while it's playing.

stop midi [id] %string%

The ID will be the string input used to get the midi file. If you're using the web midi player it will use that at the stop string too.

play midi "This" to player
wait 5 seconds
stop midi "This"

View Update

Bug fixes 2720 days, 15 hours and 23 minutes ago

- A Yaml bug that generated folders instead of the file when using SkQuery??? This happened when the yaml file didn't exist.
- Made a create file system if trying to set yaml to a file that doesn't exist
- Fixed more bugs
- Fixed some null pointers

Nothing is new or noticable. Just some bugs I found while doing heavy testing.

I also found a few more bugs that haven't been fixed yet. Still looking into it and fixing them.

Enjoy :D

By the way to anyone wondering. Yes this SkQuery version should work on most server versions, not just 1.11+

View Update

SkQuery [1.13-1.19+] 2732 days, 17 hours and 52 minutes ago

Latest 4.1.6+ version only works with Skript 2.6.1+ and was compiled in Java 17 (MC 1.13+). If you're running 1.9-1.12 use SkQuery version 4.1.4. If you're running 1.13+ and have Java 17 use this version, if you are still using anything between Java 11 and Java 16 use version 4.1.5 or upgrade to Java 17. Click "Version History" tab to view older versions.

1.6-1.8 versions of SkQuery can be found here (use 3.21.4)

This build is based off Gatt's SkQuey edit in which he removed:

  • JSON messages
  • Scoreboard stuff
  • Particles

  • Change skin effect
  • Dead bossbar stuff
  • Removed all packet stuff

  • A lot of bug fixes

  • Made to work in most versions above 1.12

  • Added tempo option to midi syntax
    play midi %string% to %players% [at [tempo] %-number%]

  • Added play midi from web link syntax
    play midi from [(web[site]|link)] %string% to %players% [at [tempo] %-number%]

  • Added stop for midi files
    stop midi [id] %string%

  • Added file existence condition file
    [exist[(s|ance)] [at]] %string% or file %string% exists

  • Removed some files that were not used
  • Removed lores, Skript 2.3+ has lores now.

  • Fixed Yaml
  • Fixed getOnlinePlayers() crash

  • Fixed glowing itemtype
  • Fixed protocolib crash error
  • Fixed the permission manager
  • Fixed a bunch of null pointers
  • Fixed Time Relative not being able to be reset

  • Fixed fireworks
  • Fixed pop firework effect but removed clientside ability. New syntax:
    (detonate|pop) %fireworkeffects% at %locations%

  • Added the ability to do multiple lamba evaluates. New syntax:
    do [%-number% time[s]] %lambda%

  • Added former movement location. Uses the getFrom() in the on any movement that never existed.
    ([the] (past|former) move[ment] [location]

  • Added settable relative option to the time relative syntax.
    (relative|player) time of %player% [with relative %-boolean%]


    %player%'s (relative|player) time [with relative %-boolean%]

  • Fixed the where filter expression not working. (Throws some errors if the predicate contains an unknown expression/value. Looking into fixing that.)

  • Changed the any movement syntax from [on] any movement to [on] any move[ment]
  • Removed broken map support.
  • Removed the annoying startup message saying this is an unoffical build from Gatt's since it's not really needed.
  • Changed this syntax
    blocks within %location% (to|and) %location%

  • Added bStats metrics

  • Removed ProtocolLib as a dependency. Meaning these broken syntax don't exist anymore:

make %players% see %blocks% as %itemtype% permanently
restore updates to %blocks% for %offlineplayers%
restore all updates

But these syntax still work:

make %players% see %block% as %itemtype%
make %players% see lines of %block% as %string%, %string%, %string%[ and], %string%

I am not the offical creator of this addon. This addon was made by w00tmaster the developer of SkQuery. All credit goes towards him. This is just a fork I made that allows SkQuery to work for versions 1.13+

Please don't demand support for this build.


View Update

© Copyright 2014-2024 skUnity

All rights reserved.