Skellett - The beast addon!

Addon Skellett - The beast addon! 2.0.10

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

Changed:
- Changed Client time relative syntax
code_language.skript:
[skellett] [client] relative time of %player% [is] [%-boolean%] [relative] [to] [server]
#to
[client] relative time of %player% (1¦is|2¦is(n't| not)) relative [to server]
- Changed whitelisted condition syntax
code_language.skript:
[server] whitelist[ed] [state]
#to
[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.
code_language.skript:
[file] exist(s|ance) [(at|of)] %string% [is %-boolean%]

Fixed:
- 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.

Added:
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)

Info:
- 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.

Syntax:
code_language.skript:
Conditions:
  
    juke[ ]box %block% (1¦is|2¦is(n't| not)) playing [a] (record|track|song)
  
#Effects:

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

    #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
  
#Regenerators:
  
    #Effects
    #Create a regenerator with specific blocks. Good for minigames like Paintball.
    (create|make) [a] [new] [skellett] regenerator with ID %string% (from|with) %blocks%
  
    #Expressions
    #Get all blocks of a regenerator
    block[s] of [skellett] regenerator [[with] id] %string%
  
#Citizens:

    #Effect
    (make|force) [the] (npc|citizen) %citizen% (talk|say|speak) %string% [to %-players%]
  
    #Event:
    [on] (npc|citizen) (speech|speak|talk):
      
        #Get message in event
        event-string
      
        #Get citizen in event
        event-citizen

Dab

Our Discord: https://discord.gg/eFgxASt
Fixed:
- Improved Actionbar parser time a little
- Changed entity can see condition
code_language.skript:
   %entity% [can] (see|visibly see|line of sight) [can see] %entity%
   #to
   %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
code_language.skript:
(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]

#and

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

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

Script example:
code_language.skript:
command /ttest:
    trigger:
        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.
Added:
- Json/Interactive clickable books
- Expression to get a blank book
- Added indexes of list variable

Fixed:
- 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

QL3I657.png


Syntax:
code_language.skript:
#Expressions:
  
    #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:
code_language.skript:
command /book <integer>:
    trigger:
        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 "https://forums.skunity.com/threads/skellett.39/" 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
code_language.skript:
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:
Added:
- 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)

Fixed:
- 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

Syntax:
code_language.skript:
#Events:

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

#Effects:
 
    #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]]

#Expresions:
 
    #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 http://wiki.vg/Entities#Entity_Metadata_Format

Example:
code_language.skript:
command /dw <integer>:
    trigger:
        broadcast "%data watcher value arg 1 from target entity%"
So assuming i'm looking at a boat
0J9BBca.png

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:
code_language.skript:
command /sizedChest:
    trigger:
        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
code_language.skript:
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!
Fixes for SkellettProxy and adds server switch event
code_language.skript:
[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!
Added:
- 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

Fixed:
- 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.

Todo:
- Working on a system to auto update Skellett

Syntax:
code_language.skript:
#Expressions:
    
    #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 https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
    [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 https://pastebin.com/api
    [(get|make|create)] [a] paste[ ]bin [link] with (data|lines) %strings%[(,| and|with)] (title|header) %string%[(,| and|with|for)] [api] key %string%
    
#Conditions:

    #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%]

Examples:
code_language.skript:
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"
code_language.skript:
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:
    trigger:
        broadcast "%skull owner of target block%"

Info:
- 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. :emoji_stuck_out_tongue:
- 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 :emoji_grinning:
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!

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

Fixes:
- 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:
code_language.skript:
[event] method %string% [is [a] loop[able] %-boolean%] [(from|of) [(expression|type|class)] %-object%] [with parameter[s] %-objects%]
Example:
invoke method "registerNpc" from class "me.limeglass.npcaddon.util.npcs.NpcManager" with parameters "LimeGlass" and player's location

https://github.com/TheLimeGlass/Npc...ss/npcaddon/util/npcs/NpcManager.java#L61-L76
- More random bug fixes

Syntax:
code_language.skript:
#Effects:

    #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%]
    #Example:
        invoke method "setFlying" from player with parameter true
   
#Expressions:

    #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%

#Conditons:
   
    #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%
   
#RedisBungee:

    #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%]

Info:
- 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: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html

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:
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:
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.
  • Like
Reactions: Goetheus and Pjinky
Fixed:
- 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

Added:
- Npc is navigating

Syntax:
code_language.skript:
[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!