Skellett by LimeGlass

All your Skript needs in one addon!

















2.0.10 54 days, 7 hours and 7 minutes ago

- Updated to Skript 2.8.2 and Spigot 1.20.4

View Update

2.0.9 447 days, 14 hours and 4 minutes ago

- Removed text components, they're in vanilla Skript now.
- Fixed Skellett not starting on 1.10 and lower due to the BlockSave syntaxes
- Fixed Bossbars not working on 1.9
- Fixed Skellett not working on Java 8
- Updated to Spigot 1.19.3
- Added new syntax to boost a player using a firework when they're in elytra mode

# Effect
(boost|launch) %players% using [firework [rocket]] %itemstack%

View Update

2.0.8 527 days, 17 hours and 40 minutes ago

Updated libraries

View Update

Bossbar fixes 655 days, 10 hours and 46 minutes ago

Fixes an issue with bossbars

View Update

Conflicts 661 days, 16 hours and 28 minutes ago

- Fixed conflicts with SkBee and the new bossbars that was added. (Defaults to SkBee's types, so if bossbars are broken, it's Skbee).
- Fixed a load chunk error in the load effect.
- Added more localization files.
- Fixed block data issues in versions lower than 1.9
- Lots of code cleaning and optimizations.

View Update

Fishing for some bug fixes 669 days, 4 hours and 49 minutes ago

- Added fishing back

#Get the fishing hook entity
[the] [event-]fish[ing]( |-)hook

# The fish entity if state was caught
hook[ed] entity

# event value
[the] [event-]fish[ing]( |-)state

- Fixed bossbar flags not working properly
- Fixed fishing state not being comparable.
- Fixed up the player bossbar syntax
- Fixed up the scoreboard team classinfo.

Included is an over engineered grappling hook example which will also require Khoryl and SkQuery on the GitHub by clicking the download link for redirect.

View Update

SkBee conflict fixes 678 days, 13 hours and 22 minutes ago

- Fixes a bug that disables SkBee or Skellett from running.

View Update

Bug fixes 678 days, 15 hours and 15 minutes ago

- Fixed a bug where the boss bar flag and a citizens condition could not find the correct classinfo for it's syntaxes. (Yes I know right, how was that even a thing)
- Fixed the NpcIsSpawned condition not working.
- Started to add .lang types, You can compile Skellett (or any of my addons) and add a Skript supported language in the /lang file.
- Added (npc|citizen)s? as the regex for the classinfo, so you can parse as an npc or citizen depending on if you have another citizens addon installed.
- Added fishing event, fishing state expression and the classinfos for them.
- Various class cleaning and optimizations.


[player] fish[ing] [state[s] [of] %-fishingstates%] with event-entity, and fishing state [the] [event-]fish[ing]( |-)state

on player fishing state of reel in or failed:
if fishing state is failed:
message "Damn, you failed at a fishing?"

Legacy plans note:
So obviously Skellett is massive and many parts are outdated or implemented wrong. A complete recode will take a long time, what i've been doing since 2.0 is recoding and cleaning up parts of Skellett. All `` classes are old and still require a recode. All `me.limeglass.skellett` classes have been cleaned up and optimized. So in this update I re-added fishing, but they're actually properly done. I'll probably remove them again after the fishing pull request for Skript itself is added.

View Update

Skript 2.6.1 809 days, 23 hours and 46 minutes ago

- Removed Armour stand syntaxes, they're moved to Khoryl
- Removed the download effect as it was insecure and not practical.
- Removed the message center syntax as the client can have set their settings to be any chat length making this syntax not work.
- Recoded Chunk outline, Entity ID and more.
- Removed un-used BlockConstructor code.

- Added new syntax

(0¦ticks|1¦milli[( |-)]seconds|2¦seconds|3¦minutes|4¦hours|5¦days|6¦weeks|7¦months|8¦years) (of|from|[with]in) %timespans%

So you can now get values from a timespan.

- Updated libraries: Minecraft 1.18.1 and Skript 2.6.1

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 2.0.3+ 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 or any Java versions that's not Java 17 use Skellett version 2.0.2, it has a zip of multiple possible versions to use. Click the "Version History" tab to view older versions.

View Update

1.18 support 852 days, 20 hours and 23 minutes ago

Added 1.18 support.

Skellett will now be separated into two versions. Java 17 and Java 11. The Java 17 versions is for 1.18+ mc and the Java 11 is for other versions. Both included in a ZIP.

Skellett now runs autonomously on the github, so when a version or library Skellett uses gets updated. The GitHub will automatically get updated and publish a nightly build. You can grab a 1.18.2+ version of Skellett if Mojang decides to do that at the source code here

Report issues at

Skellett is an open source free project developed over the years, any donations are welcome and appreciated thank you!

View Update

Block saves, a nice way to save and load areas now! 880 days, 9 hours and 51 minutes ago

- Added block saves more below.

block save[s] of %blocks

%blocks%'[s] block save

- Added automatic github actions, so you can now grab nightly builds at
- Fixed collidable condition not being proper grammar.
- Removed item frame syntaxes, they're going to be going into Khoryl.
- Removed spawner synatxes, they're going to be going into Khoryl.
- Removed Jukebox syntaxes, they're going to be going into Khoryl.
- Removed LLama syntaxes, they're going to be going into Khoryl.
- Removed Repeater syntaxes, they're going to be going into Khoryl.
- Removed slime size syntaxes, they're going to be going into Khoryl.

For those of you that wish to use the Java 11 version of 2.0.1, you can grab it from here by clicking on any latest build and downloading the nightly jar

Finally a better way of handling blocks and their types/data! Skellett has a utility expression called block saves, what this does is the return type will be a custom object, that's also serializable yay! That can be saved to a variable. So you can save a block save to a variable and set the block to the exact block save later, example script used to save and load areas:

command /pos1:
if target block is set:
set {pos::%player%::1} to location of target block
set {pos::%player%::1} to location of player
message "pos1 set to %{pos::%player%::1}%"

command /pos2:
if target block is set:
set {pos::%player%::2} to location of target block
set {pos::%player%::2} to location of player
message "pos2 set to %{pos::%player%::2}%"

command /save <string>:
{pos::%player%::2} is set
{pos::%player%::1} is set
set {saves::%player%::%argument%::*} to block saves of blocks within {pos::%player%::2} to {pos::%player%::1}
clear {pos::%player%::1} and {pos::%player%::2}
message "Saved blocks to save %argument%"

command /load <string>:
{saves::%player%::%argument%::*} is set
loop {saves::%player%::%argument%::*}:
set block at loop-value to loop-value
message "Loaded blocks from save %argument%"

command /delete [<string>]:
if argument is set:
delete {saves::%player%::%argument%::*}
message "Deleted save %argument%"
delete {saves::%player%::*}
message "Deleted all saves"

command /listSaves:
message indexes of {saves::%player%::*}

on quit:
delete {pos::%player%::*}

on script unload:
delete {pos::*}

View Update

Starting fresh 942 days, 1 hour and 38 minutes ago

Here we are, 2 years later when Skellett rain vain.
This update isn't an addition update unfortunately. This update removes everything that is already added in Skript. Since the SkriptLang team has expanded and became more active, it really deprecates the usage of Skellett. Skellett became so popular because it had so many syntaxes that Skript didn't have yet. So today's update is the start of that change, lets get Skellett back to being useful, I plan on updating Skellett with more modern syntaxes that Skript has yet to add, or features that don't suit Skript.
15% of Skellett has been recoded in this update, and more to come. Thanks for choosing Skellett after all these years, and lets go for another couple more years.

Requirements: Skript 2.6+



- Updated to Java 16
- Updated to Skript 2.6
- Updated to Spigot 1.17
- Updated to Gradle 7.1.1
- Updated Citizens to 2.0.27
- 35% smaller jar size
- Changed the collidable state to a condition %livingentities% is|are collidable
- Updated the open book effect to use Spigot method and not reflection now.

because they're in Skript 2.6+ now (I added majority of these to Skript myself):
- Removed event cancel event.
- Removed condition to check if redstone is powered.
- Removed condition to check if item is unbreakable.
- Removed condition to check if player is whitelisted.
- Removed the effect to teleport a player to a world spawn (You can get the spawn of a world now)
- Removed active potion effects expression (This is just a string and not properly implemented and Skript will soon)
- Removed expression for getting drops of a block.
- Removed powered block value (Redstone).
- Removed block hardness expression.
- Removed block xp expression.
- Removed clicked action expression it's now inventory action in Skript.
- Removed clicked inventory expression.
- Removed clicked slot expression use index of clicked slot.
- Removed clicked type expression.
- Removed clicked hotbar type expression.
- Removed client side weather syntaxes.
- Removed custom syntaxes shit.
- Removed custom name of entities expression.
- Removed enchantment level expression.
- Removed custom name visible expression.
- Removed player exhaustion expression.
- Removed fall distance expression.
- Removed fishing syntaxes (Use RandomSk until it's added in Skript, Skellett had poor implementation)
- Removed hotbar switch expressions.
- Removed inventory type expression.
- Removed invulnerable state expression.
- Removed projectile bounce expression and condition.
- Removed silent state of entities expression.
- Removed spectate target expression.
- Removed whitelist syntaxes.
- Removed world change event value expression. Use former|future event-location in Skript.
- Removed stuck arrows expression.
- Removed title expression.
- Removed fireworks.
- Removed item despawn event.
- Removed entity teleport event (but kept the event values as Skript doesn't for some reason)
- Removed resurrect event.
- Removed particles (Bad implementation)
- Removed sound syntaxes.

Removed because un-used or un-needed:
- REMOVED ALL DISGUISE SYNTAXES (Unreleased addon for Disguises coming soon)
- Removed the effects relating to files (Use Skent or SkQuery)
- Removed condition to check if a player is viewing the credits. (It used reflection and isn't really a good addition)
- Removed file existence condition (It's in Skent or SkQuery or SkUtils)
- Removed the effect that opens a chest to players (It's in Khoryl now)
- Removed the reload whitelist effect (This isn't required anymore)
- Removed the effect that saved the player list (This isn't required anymore)
- Removed the serialize effect (Skript serializing should not be accessible for Skript users)
- Removed the expression getting size of variables (Inefficient, not needed and shouldn't be accessible for Skript users)
- Removed hitbox syntaxes (This used reflection and was bad, It's now called BoundingBox in Spigot and will be added sometime to Skellett maybe)
- Removed java version expression. (Skript users don't need this)
- Removed long date expression (Skript users don't need this)
- Removed item type to material string expression (Skript users don't need this)
- Removed NBT syntaxes (These are just item flags and should be implemented properly)
- Removed world folder expression (Skript users don't need this and it's not needed for other parts of Skellett)
- Removed Yaml (There are lots of other alternatives now). I'm over the yaml hype train. Don't use YAML as a database, it's for configurations, but Skript has variables and options at the top of a script so.

Bug fixes:
- Fixed adding text components to books (Used to use reflection and it broke in newer Spigot)
- Updated the %players% is in water condition to 1.17 methods.

View Update

Scoreboard conflicts? 1269 days, 1 hour and 27 minutes ago

Fixed some addon's conflict with scoreboard teams.

View Update

Bug fixes 1273 days, 19 hours and 54 minutes ago

  • Removed Client Border syntaxes.
  • Fixed #98 in which there was a casting issue with Item frame Hanging events.
  • Fixed #92 in which Skellett conflicted with another unknown addon?

View Update

Removals and Update 1386 days, 21 hours and 39 minutes ago

  • Removed lots of things that are in vanilla Skript.
  • Removed Holograms (You can use dedicated hologram addon)
  • Removed PlayerPoints syntaxes

  • Re-added the new written book syntax for json books due to high demand. Skript's aliases broken.

  • Fixed a few null pointers.
  • Fixed some syntax not working, main one being the item cooldown.
  • Fixed lots of bugs.
  • Updated to 1.16

Changes at

View Update

GitHub issues cleaning 1663 days, 21 hours and 30 minutes ago


  • Fixed a NullPointerException in player teleport to world spawn syntax when attempting to get a world that doesn't exist.
  • Fixed SpawnerSpawnEvent registering on 1.8 servers when it doesn't exist on 1.8 servers.
  • Fixed a NullPointerException when adding null text components to books.
  • Fixed set collidable being registered on 1.8 when it doesn't exist on 1.8.

  • Removed g6round state, it's in Vanilla Skript now as a condition. `if %player% is on the ground`
  • Removed gravity state, it's in Vanilla Skript now.
  • Remove glide state, it's in Vanilla Skript now.
  • Removed indices of variables, it's in Vanilla Skript now.
  • Removed inventory viewers, it's in Vanilla Skript now.
  • Removed offline players, it's in Skript now ;) lol.
  • Removed sounds, I manually added it to Vanilla Skript now.
  • Removed entities in radius, it's in Vanilla Skript now.
  • Removed ping of player, it's in Vanilla Skript now.
  • Removed unbreakable, it's in Vanilla Skript now.
  • Removed teleport cause, it's in Vanilla Skript now.
  • Removed spawn reason, it's in Vanilla Skript now.
  • Removed the syntax that overrid Skript's slot system to allow for multiple slots. I manually added it to Vanilla Skript now.
  • Removed scoreboard tags, it's in Vanilla Skript now.
  • Removed break block naturally, it's in Vanilla Skript now.
  • Removed hiding players from other players, it's in Vanilla Skript now.
  • Removed particles, Skript has fixed it a bit, it's still trash because of the Spigot API.

View Update

Holy Triple Sal Cow, a Skellett Update! 1667 days, 22 hours and 9 minutes ago


  • Removed RPGPlayerLeveling syntax (Was a bad plugin API from the start)

  • Removed SkellettProxy (Use Skungee now)
  • Removed regenerators
  • Removed the DataTypeWatcher packet (Can't be asked to do research and update it's reflection)
  • Removed ProtocolSupport (Their API has drastically changed)
  • Removed One In The Battle Support
  • Removed MySQL syntax, use SkQuery or that other MySQL addon
  • Removed Feudal support (Plugin was abandoned)
  • Removed Eggwars support
  • Removed Book support (It's in vanilla Skript now)
  • Removed SquidHQ (They moved on to managing a minecraft server list site)
  • Removed fireworks (I added them in vanilla Skript)
  • Removed Async World load effect (FAWE has been abandoned at the moment)
  • Removed Packets
  • Removed Dyed Armour (It's in vanilla Skript now)
  • Removed Crop State (The Spigot API for crops has changed completely)

  • In the latest CorpseReborn, you can't set/get the player instance of the corpse, so now new syntax name of corpse %corpse% will just return the name of the corpse.

  • Fixed opening books to players for 1.14.4 servers, Also made the syntax multiple players open book %itemstack% to %players%

    Donations help influence the plugin if you want to help there is a donation button on the main thread, donations are not required, but appreciated.

View Update

Function names 2388 days, 5 hours and 35 minutes ago

Added a syntax to get all the function names of current functions.


[(the|all)] [of] [the] [loaded] functions

function broadcastExample(message: string):
broadcast {_message}
on script load:
set {_functions::*} to all functions where [string input contains "broadcastExample"]
evaluate "%{_functions::1}%(""Hello world!"")"

I'm making a neat Skript API for my next public script i'm going to release and I needed to be able to load external Functions ;)


View Update

MySQL properties 2404 days, 22 hours and 19 minutes ago

In this update I added the ability to configure the MySQL properties. You can read up about these at

The MySQL.yml will have to be deleted then restart your server for these newer properties. The default properties allow for reconnection which helps you in the long term without reloading often.

The newer MySQL.yml is docmented so you can read up on that stuff.

View Update

Bug fixes and some stuff 2442 days, 5 hours and 52 minutes ago

- Strange bossbar bugs
- Bossbar crashing
- Bossbar last created version dependant
- Debug option crash
- Fixed wrong version crash issue
- Fixed debug colours not working
- Changed some register features
- Fixed some register bugs
- Cleaned some code up.
- Citizen type not registering on some events (event-citizen)

- NametagEdit support
- Paste schematic (more WorldEdit coming soon)

- Removed the old Nametag system (It was only for user in the same scoreboard)
#Info: You can still make a nametag system using Full scoreboards, which simulate the exact same thing.


(place|paste) schematic %string% at %locations% [[(with|at)] angle %-number%] [with limit %-number%] [[and] (without|exclud(e|ing)) air %-boolean%]

paste schematic "test" at player with angle 90 and without air true



#Can only be reset or cleared (Reset reloads the nametag)
[nametag edit] [name[ ]]tag of %player/string%
%player/string%'s [nametag edit] [name[ ]]tag

#Set/Get the prefix of a nametag
[nametag edit] [name[ ]]tag prefix of %player/string%
%player/string%'s [nametag edit] [name[ ]]tag prefix

#Set/Get the suffix of a nametag
[nametag edit] [name[ ]]tag suffix of %player/string%
%player/string%'s [nametag edit] [name[ ]]tag suffix

View Update

1.9.5 2482 days and 45 minutes ago

- Changed Client time relative syntax

[skellett] [client] relative time of %player% [is] [%-boolean%] [relative] [to] [server]
[client] relative time of %player% (1¦is|2¦is(n't| not)) relative [to server]

- Changed whitelisted condition syntax
[server] whitelist[ed] [state]
[server] (1¦is|2¦is(n't| not)) whitelisted

- Fixed what ever the old syntax for this was. Also made a toggle for it? Fixed this crap up.
[file] exist(s|ance) [(at|of)] %string% [is %-boolean%]

- Added plural to add text component
- Cleaned up old gross conditions
- Some code cleaning
- Some minor bugs
- Some null pointers
- Fixed internal errors caused when Citizens disables itself due to unsupported version. Update your Citizens to the recommended version for your server.

Hidden syntax that are now public or weren't working:
- Jukebox is playing condition
- Jukebox force eject
- Skull owner/rotation
- Ticks from timespan
- More citizens stuff
- More regenerators stuff
- Remove potion effects
- Skull stuff
- Jukebox stuff
- Last created bossbar
- Create new inventory expression (Returns empty inventory) (Example below)

- As I promised every update will have some sorta Citizens feature until all of Citizens is supported (if it's not a bug fix update) Going back on that promise.


juke[ ]box %block% (1¦is|2¦is(n't| not)) playing [a] (record|track|song)


#Removes all potion effects from a player
remove all [potion] effects from %players%


#Returns a blank inventory
[a] new inv[entory] [with type] %string% [with %-number% row[s]] [named %-string%]

[the] tick[s] (of|from) [time[span]] %timespan%", "[time[span]] %timespan%'s tick[s]

#Returns the offline player of a skull block
[the] [skellett] skull[ ]owner of [skull] %block%
[skellett] [skull] %block%'s skull[ ]owner

#Returns the block face of a skull block in direction, blockface or string
[the] [skellett] skull[ ]rotation of [skull] %block% [in (1¦direction|2¦blockface)]
[skellett] [skull] %block%'s skull[ ]rotation [in (1¦direction|2¦blockface)]

#Grabs the spigot BlockFace compared from a direction and block
[the] [block[ ]]face of [block] %block% from %direction%
[block] %block%'s [block[ ]]face from %direction%

#Grabs the last bossbar that was created
[the] last created [boss[ ]]bar


#Create a regenerator with specific blocks. Good for minigames like Paintball.
(create|make) [a] [new] [skellett] regenerator with ID %string% (from|with) %blocks%

#Get all blocks of a regenerator
block[s] of [skellett] regenerator [[with] id] %string%


(make|force) [the] (npc|citizen) %citizen% (talk|say|speak) %string% [to %-players%]

[on] (npc|citizen) (speech|speak|talk):

#Get message in event

#Get citizen in event


Our Discord:

View Update

Bug fixes 2495 days, 19 hours and 22 minutes ago

- Improved Actionbar parser time a little
- Changed entity can see condition

%entity% [can] (see|visibly see|line of sight) [can see] %entity%
%entity% (1¦can|2¦can([ ]no|')t) [visibly] see %entity%

- Fixed a bunch of bugs I forgot to write down
- Fixed some issues with some syntax
- Did alot of testing all over Skellett (Not SkellettProxy yet, Update next week)
- Changed title syntax a little
(send|show) [a] title [from] %string% [(with|and) [subtitle] %-string%] (to|for) %players% for %timespan%(,| and| with) %timespan% [fade[ ]in](,| and| with) %timespan% [fade[ ]out]


(send|show) %players% [a] title [(with|from)] %string% [(with|and) [subtitle] %-string%] for %timespan%(,| and| with) %timespan% [fade[ ]in](,| and| with) %timespan% [fade[ ]out]

- Support for multiple text components in the book add page effect
- Support for 1.12 titles/subtitles

Script example:
command /ttest:
show title "&6Testing" to player for 5 seconds and 5 ticks and 5 ticks
wait 6 seconds
show title "&6Testing" with subtitle "&5Hi" to player for 5 seconds and 5 ticks and 5 ticks
wait 6 seconds
show title "" and subtitle "&6Hi" to player for 5 seconds and 5 ticks and 5 ticks

More updates will be coming this week aswell.

View Update

Interactive books and 1.12 actionbars! 2507 days, 23 hours and 28 minutes ago

- Json/Interactive clickable books
- Expression to get a blank book
- Added indexes of list variable

- Actionbars not working in 1.12
- Fixed 3 Citizen 1.8 issues (Released in 1.9.3 on github)

1.12 todo list:
- Add 1.12 support for the titles
- Add 1.12 support for tablist
- Add 1.12 support for removing of arrows in player

Todo with text components:
- Add text component support for Bensku's json
- Add text component support for SkellettProxy



#Grab a new written book (Because Skript's is different)
[a] new [written] book

#TextComponent stuff

#Create a new text component
[a] [new] text component [with [text]] %strings%

#Add hover event stuff to the text component (When a player hovers their mouse over it)
add hover event with action %hovereventaction% (and|with) [(value|text)] %string% to [text component] %textcomponent%

#Add clickable event stuff to the text component (When a player clicks the text)
add click event with action %clickeventaction% (and|with|to) [(execute|text|link)] %string% to [text component] %textcomponent%

#Add a page with the text component to a book
add text component %textcomponent% to [book] %itemstack%

#Message the json text component (tellraw) to the player
message text component %textcomponent% to %players%

#Works from 1.8-1.12 as tested

Example script:
command /book <integer>:
set {_book} to a new book
#SUGGEST_COMMAND and OPEN_FILE doesn't work in books. It is a chat only feature. Which is coming soon!
if arg 1 is 1:
set {_component} to a new text component with "Hello world!%nl%%nl%&5&lExample %arg 1%!"
add hover event with action SHOW_TEXT with text "&5This message is a hover!" to text component {_component}
add text component {_component} to book {_book}
else if arg 1 is 2:
set {_component} to a new text component with "&l&nExample 2!%nl%%nl%%nl%%nl%%nl%&4Working!"
#If the slash isn't inserted in the execute string. It will make them chat.
#WARNING: Entering color symbols in the execute string, causes the player to crash.
add click event with action RUN_COMMAND with execute "/example" to text component {_component}
add hover event with action SHOW_TEXT with text "&3&oClick me to execute chat or command" to text component {_component}
add text component {_component} to book {_book}
else if arg 1 is 3:
add page "Testing 1" to {_book}
add page "&1Testing 2" to {_book}
set {_component} to a new text component with "&3&l&n&nExample 3!%nl%%nl%&4Working! %all players%"
add click event with action CHANGE_PAGE to "2" to text component {_component}
add hover event with action SHOW_TEXT with text "&4&kgewhbewgjbjehbf%nl%&r&5Click me%nl%to go back a page" to text component {_component}
add text component {_component} to book {_book}
add page "&6Testing 3" to {_book}
else if arg 1 is 4:
set {_component} to a new text component with "%nl%%nl%%nl%%nl%%nl% &5&l&nClick me link!%nl%&rLeave a 5 star review!"
add click event with action OPEN_URL with link "" to text component {_component}
add hover event with action SHOW_TEXT with text "&5&lClick me to open Skellett.%nl%&5The beast addon!" to text component {_component}
add text component {_component} to book {_book}
#message text component {_component} to player
open book {_book} to player

Setting multiple text components
set {_book} to a new written book
set {_this} to a text component with text "Click below to vanish"
add hover event SHOW_TEXT with "Hover msg" to {_this}
add {_this} to {_text::*}
set {_this} to a text component with text "Click here"
add click event RUN_COMMAND with execute "/command" to {_this}
add hover event SHOW_TEXT with "Hover msg 2" to {_this}
add {_this} to {_text::*}
add text component {_text::*} to book {_book}
open book {_book} to player

As always enjoy :emoji_grinning:

View Update

Bungee switch event and some FAWE stuff 2517 days, 1 hour and 19 minutes ago

- Async world creation
- SkellettProxy switch server event
- Get folder path of a world
- Move file
- Copy file
- Fully tested 1.12 support
- DataWatcher grabber (Info below) (Ultimate entity data finder)
- DataWatcher type grabber (Info below)

- A bossbar issue
- Some SkellettProxy bugs
- Made the delete file accept directories
- Made the create file accept directories
- Bugs
- Bug in 1.12 where version dependent syntax were not getting registered (Due to unsupported version)
- Fixed an optional spamming issue caused by 1.12
- Fixed some syntax not working in 1.12



[on] (skellett[ ][(cord|proxy)]|bungee[ ][cord]) [player] switch server[s]
[on] (skellett[ ][(cord|proxy)]|bungee[ ][cord]) [player] server[s] switch


#Create or load a world Async and/or with a generator.
#Info You can't have a generator option if you're loading the world Async, Because FAWE is your generator.
#Also the node Async has to be enabled in the Skellett config.yml and FAWE installed for the async to work.
[skellett] (load|create) world %string% [with generator %-string%] [[and] [with] [fawe] async[hronous]]


#Get the world folder file path
world folder of %world%

#Get any data possible from an entity
data watcher value %number% from %entity%

#Only works for 1.8 at the moment. This returns what the return type is in a number. More info on the wiki below.
data watcher type (of|from) %*object%

Data Watcher info: Basically the data watcher is a system built into Minecraft itself, it's a variable system that mojang uses to send a bunch of variables all at once to the server and client about an entity. It contains lots and almost everything you need about an entity, from it's display name to it's health. Here is a really good wiki about what and how to use this system

command /dw <integer>:
broadcast "%data watcher value arg 1 from target entity%"

So assuming i'm looking at a boat

I could type /dw 8 and it would return a number of how much damage this boat has taken.

I could type /dw 10 and determine if the boat's Right paddle is turning! This system has so much data and it's yours to explore within Skript!

Support for setting this data will come in the future. Keep nagging me to add it if I never do xD

Other syntax examples I was playing with:

Simple way to determine how large a chest should be:
command /sizedChest:
loop 6 times:
if size of all players is within row loop-number:
set {_size} to loop-number
exit loop
open "CHEST" with {_size} rows named "&6This" to player

on bungeecord player disconnect:
broadcast "%event-string%"
broadcast "%event-uuid%"
broadcast "%event-offlineplayer%"
on bungeecord player switch server:
broadcast "%event-string%"
broadcast "%event-uuid%"
broadcast "%event-offlineplayer%"

Hope you enjoy this update! Thanks for well over 1k downloads! It's insane! Much love <3

This version needs SkellettProxy 1.3.3+ in order to run SkellettProxy stuff!

View Update

SkellettProxy fixes 2529 days, 23 hours and 54 minutes ago

Fixes for SkellettProxy and adds server switch event

[on] (skellett[ ][(cord|proxy)]|bungee[ ][cord]) [player] switch server[s]
[on] (skellett[ ][(cord|proxy)]|bungee[ ][cord]) [player] server[s] switch

This version needs SkellettProxy 1.3.2 in order to run SkellettProxy stuff!

View Update

Bug fixes, Pastebin, skull owner and more 2536 days, 22 hours and 45 minutes ago

- 1.8 pvp reverter (Basically this turns 1.9+ pvp into 1.8 pvp all that built in)
- Skull owner
- Spigot material name getter
- Clicked row expressions
- Pastebin

- Made the cooldown syntax accept multiple players.
- Cooldown not accepting Numbers.
- Added support for 1.11+ ShulkerBox's in some inventory clicking syntax.
- Changed a debug message to be understood easier.
- Fixed a possible socket issue?
- Fixed a bug in 1.8.4 and lower 1.8 versions
- Added a doc generator for Mathhulks docs. Doesn't work at the moment, only preparing.
- Added a pastebin API generator
- Fixed a packet sending issue
- Changed a debug message for SkellettProxy to be easier to understand.

- Working on a system to auto update Skellett



#Changers: set (OfflinePlayer)
#Info: Gets the offline player linked to the skull.
#Info: This can only be set at the moment for some reason.
[the] skull[ ]owner of [skull] %block%
[skull] %block%'s skull[ ]owner

#Info: Returns a spigot material name of a aliases
[the] [spigot] material [name] (from|of) %itemtype%
%itemtype%'s [spigot] material [name]

#Info: Calculates the row that was clicked in the inventory clicking event.
[the] click[ed] row

#Info: create a pastebin. This returns the link of the pastebin.
#You can get and find your pastebin API key at
[(get|make|create)] [a] paste[ ]bin [link] with (data|lines) %strings%[(,| and|with)] (title|header) %string%[(,| and|with|for)] [api] key %string%


#Info: Checks if a slot is within a row of a defined inventory.
#If the inventory isn't set, it assumes it's a chest.
#Supported inventories: Player, Chest, ShulkerBox, Enderchest, Dropper, Dispenser, Workbench and Hopper.
#Any other inventory will be calculated and guessed apon it's inventory size.
[slot] %number% (1¦is|2¦is(n't| not)) (within|of|in) row %number% [(of|in|from) [inventory] %-inventory%]

on inventory click:
cancel event
broadcast "&6%clicked row%"
if clicked slot is within row 2 of clicked inventory:
broadcast "&a&lYes"
if clicked row is 2:
broadcast "&a&lDoes same thing :P"

on rightclick on anything:
set {_material} to material from player's tool
if player hasn't got a cooldown for {_material}:
set the cooldown of {_material} for player to 100
wait 2 ticks
if player has a cooldown for {_material}:
broadcast "yes"
command /skull:
broadcast "%skull owner of target block%"

- One of the syntax can be used outside of the inventory clicking event and the other can't.
- I added this as it made some of my GUI animations faster and cleaner. :P
- Have any suggestions send them my way, I can look into adding it.
- Thanks for nearly 1000+ downloads! It's insane
- Thanks for 1.5 million players in Skellett's database!
- If you find any bugs please report them to me by PM or tag me anytime :D

View Update

Back on track 2548 days, 2 hours and 25 minutes ago

Hello guys! Sorry about missing last week's update. Skellett releases an update every week and last week I was on vacation so I missed that update. Sorry about that. This update has alot of features to make up for that :emoji_stuck_out_tongue: Also thanks for almost 900+ downloads. We're so close to 1k! It's insane. Thank you!

- Full RedisBungee support
- A method invoke effect.
- Loaded chunks of a world
- Java version
- Date from milliseconds expression
- Material cooldowns

- The SkellettProxy connect player to server effect not accepting UUID's
- The ability to delete/reset network variables
- Bug where temporarily stored global script files were not being deleted.
- Added the ability to get methods from class strings. This also goes for the new invoke effect:
New Syntax:

[event] method %string% [is [a] loop[able] %-boolean%] [(from|of) [(expression|type|class)] %-object%] [with parameter[s] %-objects%]

invoke method "registerNpc" from class "me.limeglass.npcaddon.util.npcs.NpcManager" with parameters "LimeGlass" and player's location
- More random bug fixes


#Info: This acts the same as the custom effect executer. Except you don't need to return an object. This just invokes it raw.
(invoke|execute|run) method %string% [(from|of) [(expression|type|class)] %-object%] [with parameter[s] %-objects%]
invoke method "setFlying" from player with parameter true


#Info: Get all the loaded chunks of a world.
[(the|all)] [of] [the] loaded chunks (in|of|from) [world] %world%

#Info: Get the server's java version
[the] server[[']s] java version
[the] java version of [the] server

#Info: Returns a date string from the given milliseconds
date (from|of) [(long|millseconds)] %number%

#Changers: set and reset (Number)
#Info: Set or return a cooldown of an item. This shows the cooldown animation on an items slot when used.
#Keep in mind this is only an animation. You will have to test if the cooldown is set using the cooldown condition.
#This is similar to the 1.11+ cooldown enderpearls have when used.
[the] cool[ ]down of [(item|material)] %string% (for|of) %player%
[(item|material)] %string%'s cool[ ]down (for|of) %player%


#Info: Check if a player has a cooldown active for a specific material
%player% (1¦does|2¦does(n't| not)) have [a] cool[ ]down for [(item|material)] %string%


#Info: Returns a list of all redisbungee servers.
[(the|all)] [of] [the] redis[[ ]bungee] [connected] servers

#Info: Returns a list of all redisbungee players.
[(the|all)] [of] [the] redis[[ ]bungee] players

#Does the same thing as above, but with usernames rather than uuids.
[(the|all)] [of] [the] [online] redis[[ ]bungee] player [user]names

#Info: Returns a long (number) in milliseconds of the date the player last logged in.
#Info: You can use the date from long expression to get the date string.
[the] last login of redis[[ ]bungee] [(player|uuid)] %string%
redis[[ ]bungee] [(player|uuid)] %string%'s last login

#Info: Get players on a proxy.
[(the|all)] [of] [the] redis[[ ]bungee] players on proxy %string%
redis[[ ]bungee] proxy %string%'s players

#Info: Get players on a server from redis bungee.
[(the|all)] [of] [the] redis[[ ]bungee] players on server %string%
redis[[ ]bungee] server %string%'s players

#Info: Returns the redis bungee id of a player.
redis[[ ]bungee] player id (for|of) [(player|uuid)] %string%

#Info: Get a server of a player within the redis bungee system.
[the] redis[[ ]bungee] [connected] server (for|of) [(player|uuid)] %string%

#Info: Returns the redis bungee id of the bungeecord this syntax is attached too.
[the] redis[[ ]bungee] server id [(for|of) this bungee[[ ]cord]]

#Info: Get the username of an uuid though redis bungee.
#The lookup addon allows you to tell redis bungee to do a more indepth uuid name lookup.
#It will always be true if that part of the syntax is added.
[the] redis[[ ]bungee] [player] [user[ ]]name of uuid %string% [[with] expensive lookup %-boolean%]

#Info: Check if a player/uuid is online the redis bungee network.
redis[[ ]bungee] [(player|uuid)] %string% (1¦is|2¦is(n't| not)) online [the] [bungee[ ][cord]]

#Info: Executes a command on all proxy servers connected to the redis.
#If the ID is set. The command will only be ran on that proxy with that id.
(run|execute) redis[[ ]bungee] [proxy] command %string% on [all [of the]] proxy server[s] [[with] id %-sting%]

- The redis bungee syntax are untested as I couldn't get RedisBungee to work. If you find any bugs with them, please notify me asap.
- If you find any bugs please report them to me.
- Materials doc list:

If you want to use the new RedisBungee features. This Skellett version needs 1.3.1 of SkellettProxy in order to work!

Hope you enjoy :emoji_grinning:

View Update

1.12 prep and optimizations 2565 days, 17 hours and 7 minutes ago

1.12 prep and optimizations.

This Skellett version should work on 1.12+ when it comes out, unless Spigot or Mojang deside to modify some critical features. Enjoy

Thanks for 550,000+ registered minecraft users on servers using Skellett and for nearly 800+ downloads :emoji_grinning:

View Update

Global scripts error 2577 days, 18 hours and 2 minutes ago

Fixed a critical bug where Skript wouldn't parse the reloaded global scripts properly.

This bug also had todo with the fix I had last version for the empty scripts folder not allowing global scripts.

Fixed minor bugs aswell.

View Update

Bug fixes for Skellett and SkellettProxy 2579 days, 1 hour and 25 minutes ago

- InventoryType expression now returns as a string. (Old support still works)
- Fixed spigot 1.7.2 and lower crashing due to packets.
- Fixed issue with bensku's edit and versions lower than spigot 1.10.
- Fixed comments not being generating in the files for SkellettProxy.yml and MySQL.yml.
- Made it so Skellett now reconnects to SkellettProxy if the bungeecord restarts.
- Fixed the empty scripts folder not allowing globalscripts (As said in my video tutorial)
- Fixed some null pointers

- Npc is navigating


[the] (npc|citizen) %npc% (1¦is|2¦is(n't| not)) (navigating|moving)

This Skellett version needs version 1.3.0+ of SkellettProxy in order to run SkellettProxy features!

Also thank you for making Skellett the second most used addon for Skript :emoji_grinning: And thank you for nearly 700+ downloads!

View Update

NETWORK VARIABLES! 2583 days, 16 hours and 45 minutes ago

You can now share variables between servers on your bungeecord server.

Basically this allows you set a variable on the bungeecord and then on another server call that variable.


[the] [skellett[ ][(cord|proxy)]] (global|network) [var[iable]] [(from|of)] %object%

This can only be set and grabbed at the moment.


set network variable {test} to "&6Hello world!"
set {_this} to network variable {test}

Simple and sweet.

There is also a backup system to save your variables so you don't have to worry about losing your data if something goes wrong. You can access the settings for this in the config of SkellettProxy on the bungeecord

There is also an option called AutomaticSharing. What this does is basically sets the physical variable on the spigot server side.

So if I run

set global variable {test} to "&6Hello world"

On other servers, all I would have to do is;
broadcast "%{test}%"

In order to access the variable.

This project has taken me about a week or so to make. Hope you enjoy it. Was quite the trouble to make it aswell.

This Skellett version needs SkellettProxy 1.2.9+ to run if you're using SkellettProxy features!

View Update

SkellettProxy Bungeecord side scripts! 2589 days, 23 hours and 51 minutes ago

Today I present to you Bungeecord side scripts!

You can place any of your scripts in the SkellettProxy/scripts folder on the bungeecord and SkellettProxy will load all these scripts in this folder across all of your bungeecord servers!

No more hastle of going into each server and updating each script manually. You can now edit everything from the SkellettProxy scripts folder! How cool is that!?

New settings: You can enable/disable GlobalScripts in the SkellettProxy config with the new setting. I will be adding more configurable options to this as it's got alot that can be done. There is also a new option that can enable/disable the console messaging for when a script is reloaded or created.


You must have the "events" option enabled in the SkellettProxy.yml found at plugins/Skellett/SkellettProxy.yml on your Spigot server.

This Skellett version needs SkellettProxy 1.2.8 in order to run SkellettProxy stuff!

View Update

SkellettProxy connection hot fix 2590 days, 18 hours and 59 minutes ago

I have been getting litterally 20+ messages a day saying that Skellett and SkellettProxy aren't working. Sorry about that lol. I just didn't have any time to work on a fix. Now I have some time and here is a fix and tested.

- Citizens Attack (Requested by @pepper82)
- Server tick

Fixed a few other things.



#Info: This gets the server tick not tps. Tick is basically the interval of Minecraft.
#It's like the System time, but for Minecraft.
#You can use this to get how long the server has been up in ticks etc.
[the] server tick[s]
[the] server's tick[s]
[the] tick[s] of [the] server


#Make a citizens attack another entity
#Info: The aggressive state means the Npc will attack and damage it. If this is false the npc will just target an entity but not damage
(make|force) (npc|citizen) %npc% (target|attack|damage|follow) %entity% [[aggressive] [state] %-boolean%]

This update was mainly to fix the SkellettProxy issue.

Thanks for your patience and waiting 2 days for a fix xD

You still only need the latest SkellettProxy 1.2.7 for this to work. It's a Skellett side issue :P

View Update

Fixed alot of bugs and added a bunch of stuff 2592 days, 14 hours and 20 minutes ago

- Hanging event + every spigot event value. The hanging event deals with Item frames, fence leashes or painting.
- Condition to test if a player can see a player with the protocol hidden syntax.
- Statistics support (Requested by @Blueyescat)
- Blocks outlining chunk

- Changed from MCstats to bStats for metrics

- A critical bug where the SkellettProxy.yml port would reset all the time if it wasn't a port that Skellett liked. (Reported by @NeNex)
- Fixed the SkellettProxy port not accepting anything but 4 digit ports. You can now put any port you want. (Reported by @NeNex)
- Add page with string being split into mulitple pages (Reported by @Blueyescat)
- Fixed pages being added to random items throwing errors
- Harmless MySQL null pointers
- Alot of minor bug fixes
- 6+ null pointers



[on] (unhang|[entity] unhung)

#The entity being unhung

#Gets the entity removing the hung entity
[the] (hung|hang)[(ed|ing)] remover [entity]

#Returns the cause of this event
[the] (hung|hang)[(ed|ing)] cause

[on] (hang|[entity] hung)

#The player hanging the entity
#The hanged entity
#The block an entity was hung on

[on] ([un]hang[ing]|[un]hung) [entity] (remove|break|destroy)

#Gets the entity removing the hung entity
[the] (hung|hang)[(ed|ing)] remover [entity]

#The entity being destroyed

#Returns the cause of this event
[the] (hung|hang)[(ed|ing)] cause


#Checks if the player is protocol hidden to another player using the reveal and hide effects
[player] %player% (1¦can|2¦can([ ]no|')t) see [player] %player%


#Get the statistic of anything from a player
#Info if the Statistic requires a Material or Entity. Insert that data into the appropriate string provided.
[the] stat[istic][s] %string% (of|from) %player% [[(with|from|for|of)] entity[[ ]type] %-string%] [[(with|from|for|of)] material %-string%]

#Get the locations outlining a chunk
[(the|all)] [of] [the] blocks [in [a[n]]] (around|outlin(e|ing)) [of] chunk %chunk% [[at] [y(-| )coordinate] %-number%]


Test script:
command /stats <text> <text> [<integer>]:
usage: /stats (get|set|add|subtract|reset) (statistic) [(value)]
loop enum values of statistic:
if "%loop-value%" is arg 2:
set {_found} to true
if {_found} is true:
if arg 1 is "set":
if arg 3 is set:
set statistic "%arg 2%" from player to arg 3
else if arg 1 is "add":
if arg 3 is set:
add arg 3 to statistic "%arg 2%" from player
else if arg 1 is "subtract":
if arg 3 is set:
subtract arg 3 from statistic "%arg 2%" from player
else if arg 1 is "reset":
reset statistic "%arg 2%" from player
set {_stat} to statistic "%arg 2%" from player
broadcast "%{_stat}%"
message "&c%arg 2% is not a statistic"
command /statMaterial:
set {_stat} to statistic "DROP" from player from material "ROTTEN_FLESH"
broadcast "%{_stat}%"
command /statEntity:
set {_stat} to statistic "KILL_ENTITY" from player from entity "ZOMBIE"
broadcast "%{_stat}%"
command /blocks <boolean>:
set {_chunk} to chunk at player's location
if arg 1 is false:
loop all blocks outlining chunk {_chunk}:
set loop-block to diamond block
loop all blocks outlining chunk {_chunk} at y-coordinate of player:
set loop-block to diamond block
wait a tick
on unhang:
if unhang cause is not "ENTITY":
cancel event

View Update

MySQL fix, Item frames, client chests and more 2593 days, 21 hours and 41 minutes ago

- Client chest open and close animation
- A bunch of beta syntax that are disabled because they broke? .-.
- Load chunk
- Unload chunk
- Itemframe rotation and item within (Suggestion from @Rixic)
- PlaceholderAPI attempt? PlaceholderAPI always returns the input. Atleast for my 1.11.2 version. I need to contact Clip which I have, waiting for reply.
- Added all Skellett events to the docs
- Added option to fix muliple queries issues.

- Fixed weird suppressed warning on all expressions. (Internal)
- Changed second syntax of custom name disguise:

%disguise%'s [custom] name
disguise %disguise%'s [custom] name

- Fixed clicked item error
- Fixed some internal stuff that was mainly to help myself.
- Minor Bug fixes.
- Null pointers


#Make a block appear open like a chest or shulker box
[skellett] make [the] %block% (appear|look) (1¦open|2¦closed) for %players%
[skellett] play chest (1¦open|2¦close) animation at %block% for %players%
[skellett] (1¦open|2¦close) [the] %block% for %players%

#If generating is true, it will generate the chunk if it's never been loaded before
[skellett] load chunk %chunk% [[with] generat(e|ing) %-boolean%]

#Saving will save the chunk to memory
[skellett] unload chunk %chunk% [[with] sav(e|ing) %-boolean%]


#Changers: set (ItemStack)
[skellett] item (in|inside|within|of|from) item[ ]frame %entity%
[skellett] %entity%'s item[ ]frame item
[skellett] item[ ]frame %entity%'s item

#Changers: set (Rotation)
[skellett] rotation (of|from) item[ ]frame %entity%
[skellett] %entity%'s item[ ]frame rotation
[skellett] item[ ]frame %entity%'s rotation

#Doesn't work. PlaceholderAPI is stupid.
[parse[d]] place[ ]holder [(from|with)] %string% [[(from|for)] %-player%]



Rotation types:

Rotated clockwise by 90 degrees
Rotated clockwise by 135 degrees
Rotated clockwise by 45 degrees
Rotated counter-clockwise by 90 degrees
Rotated counter-clockwise by 45 degrees
Flipped upside-down, a 180 degree rotation
Flipped upside-down + 45 degree rotation
No rotation

Test script:
#/itemframe stone COUNTER_CLOCKWISE_45
command /itemframe [<item>] [<rotation>]:
if target entity is set:
if arg 1 is set:
set item in itemframe target entity to arg 1
broadcast "%item in itemframe target entity%"
if arg 2 is set:
set rotation of itemframe target entity to arg 2
broadcast "%rotation of itemframe target entity%"
command /openChest:
make target block appear open for player

View Update

Quick edit 2600 days, 4 hours and 3 minutes ago

Added event-player event value to Packets

on packet:
if event-string is "PacketPlayInSettings":
broadcast "%event-player%"
set {_this} to packet field "a"
broadcast "Language: %{_this}%"
set {_this} to packet field "b"
broadcast "View distance: %{_this}%"
set {_this} to packet field "c"
broadcast "Chat setting: %{_this}%"
set {_this} to packet field "f"
broadcast "Lefty or Righty: %{_this}%"

View Update

Packets! 2600 days, 4 hours and 13 minutes ago

- Full packet support with every packet the client recieves and sends

- Some bug fixes

Basically packets are like a channel between the minecraft client and the minecraft server. These packets are what allow minecraft to function and communicate. With Skellett you can now intercept and manipulate these packets. Along with cancelling them. Skellett packets require no external dependency and include every single packet the client sends and recieves. This leads to alot of data manipulation and control over your server.

You can view all packets and data infomation here


[on] packet [(send|sent|recieve)]
#Changers: set (Object)
[the] [skellett] packet (data|value|field) %string% [[is] [a] loop[able] %-boolean%]

Example script:

on packet:
if event-string is "PacketPlayInSettings":
set {_this} to packet field "a"
broadcast "Language: %{_this}%"
set {_this} to packet field "b"
broadcast "View distance: %{_this}%"
set {_this} to packet field "c"
broadcast "Chat setting: %{_this}%"
set {_this} to packet field "f"
broadcast "Lefty or Righty: %{_this}%"

View Update

Bug fixes and block durability 2600 days, 20 hours and 50 minutes ago

- Block durability
- Readded the string option for bungeecord UUID

- Some null pointers
- Bug fixes


#Changers: set, add and remove (Number)
#Info: This was a test to see how minecraft handles block hardness/durability.
#This expression applys to all blocks of it's type. Not just one.
#When setting this, say you set the value to like 5.5 or something.
#The block won't break until the durability of the block has reached 5.5. This will stay contant.
#So if you break a block it won't break until X ticks after, this isn't the value 5.5 that's in ticks.
#It's just a strange mechanic I was playing around with. I thought the outcome would be different, but my hypothesis was wrong.
#Anyways you can get the hardness of any block which can be helpful.
[the] block (break delay|durability|hardness) of [all] %block%
[all] %block%'s block (break delay|durability|hardness)

Test script:
command /hardness [<number>]:
broadcast "%block hardness of target block%"
if arg 1 is set:
set block hardness of target block to arg 1
broadcast "&cNew: %block hardness of target block%"
command /test:
set {_this} to bungeecord uuid of player
broadcast "%{_this}%"
set {_this} to bungeecord uuid of "%player%"
broadcast "%{_this}%"
#Below is not recommended because it has a chance of not being the exact uuid, but a generated one.
set {_this} to bungeecord uuid of "%uuid of player%"
broadcast "%{_this}%"

View Update

Scoreboard fixes 2604 days, 3 hours and 17 minutes ago

Fixed a scoreboard issue where if you updated the slot and text at the same time, the text would get cut off.

Also made the scoreboards about 25% faster

View Update

Bug fixes and inventory stuff 2607 days, 4 hours and 20 minutes ago

- Crashing bug with image class


- Inventory rows size
- Make inventory size settable (Needs to be multiple of 9)
- Made open inventory effect not flash or move cursor of player


#Changers: set (Number)
#This is the size of rows
[skellett] (gui|menu|inventory|chest|window) row[s] (of|from) %inventory%
%inventory%'s (gui|menu|inventory|chest|window) row[s]

View Update

MySQL bug fix 2609 days, 23 hours and 58 minutes ago

- Beta support for SQLite or any SQL driver. You can now input your class path and SQLite option.
- Added create a blank map.

- Fixed a critial bug when connecting to MySQL using the connect syntax.
- Small bugs



#Returns a new blank map created for a world
[skellett] [a] new map[[ ]view] (for|from|with) [world] %world%

View Update

Anti-flicker Stylish scoreboards! 2610 days, 18 hours and 50 minutes ago

I made the Stylish scoreboards anti-flicker. No changes to the syntax or anything. I just rewrote the system so it doesn't flicker anymore :emoji_grinning:

I have tested it and with a TPS of 19.95+ you will get no flicker at all. But if you start to drop FPS like below 19.95 you start to see some flicker. This only happens when you contantly update the scoreboard ticks at a time like in this video. It won't flicker at all if you don't update by a tick everytime.

In this video i'm updating 15 lines every tick. Which is insane and you can see no flicker running 19.96+ tps (In the video) but when it drops like I said you will notice flicker. This is shown in the video.


Example script:

function animate(p: player):
add "&a", "&b", "&c", "&d", "&e", "&1", "&2", "&3", "&4", "&5", "&6", "&7", "&8", "&9" and "&f" to {_d::*}
set {_t} to "This is some text made for testing yeeeeeeeeeeeeeee!"
set {_num} to a random integer out of {list::*}
remove {_num} from {list::*}
#set {_time} to "%random integer between 1 and 3% ticks" parsed as timespan
loop (the length of {_t}) times:
wait a tick
set {_s} to subtext of {_t} from characters loop-number to (loop-number + 32)
set the text of id "%{_p}%Slot%{_num}%" to "%{_d::%{_num}%}%&6%{_s}%"
command /testing:
add "&a", "&b", "&c", "&d", "&e", "&1", "&2", "&3", "&4", "&5", "&6", "&7", "&8", "&9" and "&f" to {_d::*}
if stylish scoreboard "T-%player%" does not exist:
create new stylish scoreboard named "T-%player%"
loop 15 times:
if loop-number is not 15:
add loop-number to {list::*}
create a new id based score "%player%Slot%loop-number%" with text "%{_d::%loop-number%}%" slot loop-number for stylish scoreboard "T-%player%"
set title of stylish scoreboard "T-%player%" to "&a&lSkellett"
set stylish scoreboard of player to "T-%player%"
set the text of id "%player%Slot15" to "&a&lSkellett stylish scoreboards ftw"
loop 50 times:
wait "%random integer between 1 and 10% ticks" parsed as timespan
delete {list::*}
wait a second
message "done"
loop 15 times:
delete the id based score "%player%Slot%loop-number%" in stylish scoreboard "T-%player%"
delete stylish scoreboard "T-%player%"
loop 15 times:
delete the id based score "%player%Slot%loop-number%" in stylish scoreboard "TEST-%player%"
delete stylish scoreboard "TEST-%player%"

If you find any bugs with the stylish scoreboards please tell me and downgrade to 1.8.1.

Hope you enjoy!

Make something cool with stylish scoreboards? Send me a gif/image I would love to see it :emoji_grinning:

View Update

Clientside worldborders! 2612 days, 6 hours and 54 minutes ago

Thanks to @Sashie for guiding me as to where the methods where :emoji_grinning:


- Clientside world borders. This means that these borders are only seen to a player.

- Some bug fixes


Client borders:


#Changers: set (Location)
#Info: The location ignores the y coordinate
[client [side]] [world] border center [location] (for|of) %player%
%player%'s [client [side]] [world] border center [location]

#Changers: set, add, remove and reset (Number)
#Info: Resetting it returns it to like how a new border would be made
[client [side]] [world] border size (for|of) %player%
%player%'s [client [side]] [world] border size

#Changers: set, add, remove and reset (Number)
#Info: Resetting it returns it to like how a new border would be made
[client [side]] [world] border [damage] buffer (for|of) %player%
%player%'s [client [side]] [world] border [damage] buffer

#Changers: set, add, remove and reset (Number)
#Info: Resetting it returns it to like how a new border would be made
[client [side]] [world] border damage [amount] (for|of) %player%
%player%'s [client [side]] [world] border damage [amount]

#Changers: set, add, remove and reset (Integer)
#Info: Resetting it returns it to like how a new border would be made
[client [side]] [world] border warning [time] (for|of) %player%
%player%'s [client [side]] [world] border warning [time]

#Changers: set, add, remove and reset (Integer)
#Info: Resetting it returns it to like how a new border would be made
[client [side]] [world] border warning distance (for|of) %player%
%player%'s [client [side]] [world] border warning distance

Example script:
command /b:
set client border warning distance of player to 100
set client border center location of player to player's location
broadcast "&6%client border center location of player%"
broadcast "%client border size of player%"
loop 20 times:
set client border size of player to loop-number
broadcast "%client border size of player%"
wait a second
reset client border warning distance of player

- There are two new config options added. The first one is to save and get any changes that were made when using the using client borders. You can enable and disable this. The second option is to change the client borders into world borders. You can make the worldborders act like normal borders aswell.


View Update

SkellettProxy support update 2613 days, 1 hour and 34 minutes ago

This update doesn't add much for the spigot side of things. This version is mainly used to support the new SkellettProxy update. You can read more about it here

I fixed a few small bugs though.

Enjoy and thanks for over 300 downloads :D It means alot. Thank you.

View Update

NMS stuff :D 2616 days, 13 hours and 34 minutes ago

- Update inventory
- Open book client side
- Hitbox sizes of entities
- Player viewing credits
- Entity in water
- Full spawner support

- Add page with string not working
- More null pointers



update [the] (inventory|menu|gui) %inventory%

open book %itemstack% to %player%


[the] hitbox length of %entity%
%entity%'s hitbox length
[the] length of %entity%'s hitbox

[the] hitbox width of %entity%
%entity%'s hitbox width
[the] width of %entity%'s hitbox


[player] %player% (1¦is|2¦is(n't| not)) viewing [the] credits

[entity] %entity% (1¦is|2¦is(n't| not)) in water



#Changers: set, add and remove (Integer)
delay (of|from) spawner [at] %block%
%block%'s spawn[er] delay
spawn[er] delay (of|from) %block%

#Changers: set (String)
(entity|mob|creature) [type] (of|from) spawner [at] %block%
%block%'s spawn[er] (entity|mob|creature) [type]


(make|force) spawner [at] %block% to spawn [[a[n]] entity]


[on] spawner spawn:

#Get the spawner used to spawn the entity

#Get entity spawned

Example script:
#command /egg:
# trigger:
# set {_p} to the eggwars player player
# broadcast "%{_p}%"
command /hello:
if enchantments of player's tool are set:
loop all enchantments on player's tool:
add "%loop-enchantment% %enchantment level of loop-enchantment in player's tool%" to {_enchantments::*}
broadcast "%{_enchantments::*}%"
command /i <itemtype>:
give player arg 1
#on npc rightclick:
# if id of npc event-npc is 6:
# make event-player execute command "say hi"
command /hi:
open "HOPPER" to player
wait 2 seconds
open "BEACON" to player
#on join:
# while player is online:
# wait a second
# if player is viewing the credits:
# broadcast "&aYes"
# else:
# broadcast "no"
command /test:
skellett nms of target entity
command /example:
if target entity is in water:
broadcast "&bYes"
broadcast "no"
command /spawnTest:
set mob type of spawner target block to "Zombie"
message "%mob of spawner target block%"
on spawner spawn:
broadcast "%event-block%"
broadcast "%event-entity%"
command /size:
message "%target entity%: %hitbox length of target entity% x %hitbox width of target entity%"
command /search <text>:
message " "
loop all packettypes:
if "%loop-value%" contains "%arg 1%":
message "&6%loop-value%"
message " "
command /openBook:
set {_item} to slot player's current hotbar slot of player
set slot player's current hotbar slot of player to a written book
add page "&4&l&m-&a&l*&4&l&m__ &2&l&nSkellett&4&l&m __&a&l*&4&l&m-&r%nl%%nl%%nl%%nl%%nl%%nl%%nl%%nl%%nl%%nl% &dHot" to player's tool
open book player's tool to player
set slot player's current hotbar slot of player to {_item}

- Skellett has had weekly updates for nearly 3+ months now. That's how we do it!
- I'm sick right now. So that may or may not decrease my productivity.
- I'm starting to play around with NMS stuff now. As you can tell by this update. None of it expect spawners can be obtained in Spigot. This all uses NMS with Reflections. Meaning you won't have to worry about Skellett breaking on version changes. Unlike the others. I will tend to keep it that way aswell.
- Everything in Spigot is pretty much possible in Skellett so i'm moving to NMS now. If you have any suggestions or things that are possible, feel free to tell me :emoji_grinning:


View Update

Bug fixes and small features 2617 days, 20 hours and 58 minutes ago

- Custom name toggle
- Multiple slot expression


- Fixed creating scoreboard not working
- Fixed some bugs
- Fixed some null pointers


[a] [new] (npc|citizen) [with] (name[d]|id|string) %string% [and] [with] [entity [type]] %string%
[a] [new] npc [with] [entity [type]] %string% [and] [with] (name[d]|id|string) %string%


#Changers: set (Boolean)
[skellett] custom name visib(le|ility) of %entity%
[skellett] visib(le|ility) of %entity%'s custom name

#Changers: set, reset, remove, remove all and delete (ItemStack)
[items (from|of|in)] slots %numbers% (from|of|in) %inventory%

View Update

Critical bug fix for any version lower than 1.11 2623 days and 31 minutes ago

- Citizen get Npc by ID or Entity
- PlayerPoints support
- SkellettProxy online status

- Folders being generated when using the create file syntax or using yaml with a file that didn't exist.
- Fixed Seemless potion's syntax not working.
- Fixed a critical bug that made Skellett not work on 1.8-1.10 versions
- Fixed some null pointers




[the] (npc|citizen) (of|from) entity %entity%

[the] (npc|citizen) (of|from) [id] %number%



#Changers: set, add, remove/subtract, remove all and delete
[the] [player[ ]]points of [(player|uuid)] %string%
[(player|uuid)] %string%'s [player[ ]]points


pay %string% %number% [player[ ]]points from %string%['s account]
[(force|make)] %string% [to] pay %number% [player[ ]]points to %string%



[the] [(skellett[ ][(cord|proxy)]|bungee[ ][cord])] online [status] of (skellett[ ][(cord|proxy)]|bungee[ ][cord]) server %string%

Please note that you will need the latest SkellettProxy in order to use the new SkellettProxy syntax.

View Update

CROSS BUNGEECORD EFFECTS YA BOI!!!!!!!!!!!!! 2629 days, 18 hours and 7 minutes ago

Yes it's true. For the first time in Skript history you will now be able to run ANY effect on another server connected to your bungeecord! This means cross variable sharing, Data transfering and so much more!


- Full control over all servers and Bungeecord (Mainly a feature for myself)
- Communication between all servers
- Probably alot of bugs. If you find any please report

- Some bugs


[on] (skellett[ ][(cord|proxy)]|bungee[ ][cord]) player (disconnect|leave)

eval[uate] [skript]
%string% (on|from) [the] [bungee[ ][cord]] [server] %string%

Example script:
on script load:
evaluate "set {testing} to ""&6&lYES""" on bungeecord server "Tests2"
evaluate "broadcast ""&6&lWhat the actual ****!!!!!""" on bungeecord server "Tests2"
broadcast "sent"
on bungee player leave:
broadcast "%event-player%"

- I'm currently working on more bungeecord event plus event values for them. (This is litterally madness to code. Currently the events work but the event-values and data don't)
- I am planning on making bungeecord expressions aswell.
- If you find any bugs or small null pointers please notify me of it.
- Thank you for 100 downloads on SkUnity. It means alot <3
- Don't forget to leave a 5 star review as this is litterally madness right now :emoji_grinning:
- I have been working on this project for a week non stop. I have just been so hooked into making this a reality, well now it's finally a thing.
- The Bungee events are currently under beta testing. Feel free to try them if you please. You will need to setup a port and enable the Events node found in the SkellettProxy.yml all features from the events are in beta so just be cautious about that. They shouldn't be harmless to your server in any ways.

The string used for the server string in the Max players and Evaluate syntax is the name of the server from the So if the name of a bungeecord connected server is Test2 is in the That is what the string will be. If this is still confusing and you don't get how to make it work, feel free to contact me.

This version needs SkellettProxy 1.2.5+ to run

Leave a like xD

View Update

New SkellettProxy server watcher 2631 days, 20 hours and 6 minutes ago

- Support for the new server watcher in SkellettProxy
- Added Max players of bungeecord server

[the] max[imum] [amount] [of] players for (skellett[ ][(cord|proxy)]|bungee[ ][cord]) server %string%

- Added get Entity from uuid
[skellett] entity (from [the]|of) (uuid|[universal] unique id) %string%

- Changed syntaxs
[skellett] [get] item[s] (of|in|inside|within) entity %entity%
[skellett] (size|number|amount) of item[[ ]stack] %itemstack%

If you use SkellettProxy you need the latest 1.2.4 update

View Update

More bug fixes 2635 days, 12 hours and 43 minutes ago

- Changed syntax:

[skellett] (size|number|amount) of item[[ ]stack] %itemstack%

- A few null pointers
- SkellettProxy issue
- 1.8.8 issue
- Small syntax issues.

I have been doing alot of testing on minor things to make sure Skellett is as stable as can be :emoji_muscle:

View Update

Bug fixes 2636 days, 2 hours and 37 minutes ago

- A Tuske issue
- Some syntax interference as reported by @Snow-Pyon :D
- Code clean
- Updated some syntax to new style
- Bug fixes
- More null pointer fixes

View Update

Bug fixes 2636 days, 16 hours and 26 minutes ago

- Changed a bolding format in the /skellett syntax toggles.
- A little bit of code cleaning. No noticeable change.
- Fixed a 1.8 bug with the breeding event.
- Fixed a few null pointers.
- Fixed not being able to change the age of zombies.
- Changed syntax:

%player% (1¦is|2¦is(n't| not)) (running|using) [the] [client] SquidHQ [client]

Test script:
command /spawnmob:
spawn 1 of zombie
set {_entity} to last spawned zombie
if {_entity} is an adult:
broadcast "yes"
broadcast "no"
make {_entity} a baby

View Update

Skellett - The beast addon! 2638 days, 22 hours and 55 minutes ago

Documentation | Github | Bug reports

The most popular Skript addon


  • Place in your plugins folder
  • Restart server, and you have endless Skript syntax!

If you have any questions or need help with anything, feel free to reply in the discussion, and I will get back to you as soon as I can.

View Update

© Copyright 2014-2024 skUnity

All rights reserved.