Merry Christmas everyone, I hope you've all had the chance to spend these last few days with your loved ones and I pray for all of you to be able to happily celebrate New Year's Eve; 2024 is coming to a close and after just over 4 months without public releases and a ton of work behind the scenes I'm happy to announce Lusk 1.3, this update took a while to make but I'm satisfied with the result and I think you'll be too!
If you're interested in getting early access to releases/features, join the skUnity Discord, I often give out betas and prereleases there.
To go along with this release I would also like to mention that if you have any suggestions, ideas, want to see something added or just need help with something you can contact me at any time or open an issue here if appropriate!
Where there's demand there's supply.
From now on all official releases of Lusk will only be available on Modrinth; Modrinth grants developers 75% of the ad revenue and this can REALLY help a ton when making updates!
- Minecraft 1.16.5 -> 1.21.4+ (Spigot and Paper)
- Skript 2.6.4 -> 2.10+
Each addition is paired with a working example, but for most elements multiple patterns are available, consider checking the documentation for more info.
on anvil gui open:on anvil gui click:on anvil gui close:if the anvil cannot be closed:if {_player} is viewing any anvil gui: if {_player} is viewing anvil gui {_anvilGui}:close anvil gui {_anvilGui}open anvil gui {_anvilGui} to {_player}prevent anvil gui {_anvilGui} from closingthe anvil guisend the anvil gui interactable slots of {_anviGui}anvil gui inventory of {_anvilGui}currently open anvil gui of {_player}set the anvil gui first item of {_anvilGui} to stone named "hi"set the anvil gui text input of {_anvilGui} to "new text!"set {_anvilGui} to a new anvil guiset {_anvilGui} to a new anvil gui copying {_otherAnvilGui}send all of the open anvil guiswhen {_anvilGui} gets opened:
broadcast "%{_anvilGui}% has been opened!"
when {_anvilGui} gets clicked:
broadcast "%{_anvilGui}% has been clicked!"
when {_anvilGui} gets closed:
broadcast "%{_anvilGui}% has been closed!"
set the clicked itemstack to stoneon player slot drop:
if the item is being dropped from the cursor:if the item is not being dropped from the inventory:if the whole stack is being dropped:if the whole stack is being dropped from the cursor:on player off hand interaction with an entity:on player interacting with a block:on player main hand interact:on player velocity change:
set the new player velocity to vector(0.4, 5, 1)make player start riptiding for 5 secondsmake player start riptiding for 5 seconds using tool with attack damage 12make player stop riptidingforcefully make {_player} sleep at {_location}try making {_player} sleep at {_location}force {_player} to sleep at {_location}make {_entity} not burn under the sunmake {_entity} immune to the sunlightif {_entity} is aggressive:add {_entities::*} to collidable exemptions of {_entity}set {_uuids::*} to collidable exemptions uuids of {_entities::*}set client sided custom name visibility of {_entity} to falseset equipment slot chest slot of {_entity} to iron chestplatesend entity id of {_entity}set whether {_entity} is aggressive to truespawn snapshot {_entitySnapshot} at {_location}spawn 3 of snapshots {_entitySnapshots::*} at {_location}send entity snapshot type of {_entitySnapshot}broadcast supported enchantments of {_tool}on skript effect command:
the effect commandif item frame {_frame} is fixed:if item frame {_frame} is visible:if item frame {_frame} is invisible:rotate {_itemFrame} counter clockwise twicerotate {_itemFrames::*} by 45 degrees 3 timessilently set item frame item of {_itemFrame} to iron swordset the item frame rotation of {_itemFrames::*} to 45 degreesset the item frame drop chance of {_frame} to 0.74set whether item frame {_frame} is fixed to false
-is Visible / is Invisible (Property): #17
set whether item frame {_frame} is visible to falseset whether item frame {_frame} is invisible to falsesilently:
set item frame item of {_frame} to stone
# Won't make the placing sound.
45 degrees, 135 degreesif chest slot is disabled for {_armorStand}:set the armor stand disable slots of {_armorStand} to chest slot and hand slotset whether armor stand {_armorStand} is invisible to trueif {_book} has stored enchants:set stored enchantments of {_book} to sharpness and unbreaking 3if {_crossbow} has charged projectiles:set charged projectiles of {_crossbow} to iron sword, dirt and arrowif {_projectile} has left its shooter:set whether {_projectile} has left its shooter to trueset the arrow damage of {_projectile} to 10set the arrow pierce amount of {_projectile} to 3if {_chicken} is chicken jockey:set whether {_chicken} is a chicken jockey to true:teleport {_endermen::*} towards {_entity}if {_foxes::*} trust {_players::*}:set whether fox {_fox} is crouching to true:set whether fox {_fox} is defending to false:set whether fox {_fox} is faceplanted to false:set whether fox {_fox} is leaping to true:set fox variant of {_fox} to red fox type:if {_endCrystal} is showing its bottom:hide end crystal bottom of {_endCrystals::*}show entity's end crystal bottomset end crystal beam target location of {_endCrystals::*} to location(54, 90.5, 54)set whether ender crystal {_endCrystal} is showing the bottom to trueif ender eye {_enderEye} is going to drop:if ender eye {_enderEye} is going to shatter:set the ender signal target location of {_enderEye} to {_location} without updatingset ender eye despawn time of {_enderEye} to 2 secondsset ender signal item of {_enderEye} to stoneset the ender signal is going to drop property of {_enderEye} to falseset ender eye target location of {_enderEye} to location of playerthe server version[!TIP] Most of the new Block elements support Blocks, BlockStates, BlockDatas and Items!
on block damage update:on block break progress update:on block ignition due to lava ignition:on player block ignition:if {_block} can be waterlogged:if tool of player can be waterlogged:if {_blockData} is waterlogged:if {_blockState} is not waterlogged:waterlog {_blocks::*}make {_item} not waterloggedset whether {_block} is waterlogged to truesend is waterlogged property of {_item}set the fluid level blockdata to water[level=4]if tool of player is waxed:if block is waxed:set whether offhand tool of player is waxed to falsesend is waxed property of {_blockStates::*}if {_blockState} is not placed:if {_boundingBox} overlaps {_boxes::*}:all of the blocks within {_box} in world {_world}all of the zombies in box {_box} in world {_world}all the entities in boxes {_boxes::*} in {_world}set {_lesserX} to the bounding box lesser x-loc of {_box}set {_centerY::*} to the bounding box center y-coord of {_boxes::*}set {_lesserX} to the bounding box lesser corner of {_box}set {_centerY::*} to the bounding box center of {_boxes::*}set {_face} to blockface from {_block1} to {_block2}banner pattern skull pattern type with color redset max fuse ticks of {_creeper} to 10set fuse time of {_tntMinecart} to 4 secondsset fuse ticks of {_tnt} to 35send coordinate list of {_quaternion}broadcast x coordinate of {_location}if {_object} is collidable:silently:
set item frame item of {_frame} to iron sword # won't play the sound
event-livingentity.event-endermanescapereason.Made almost everything spigot and version safe.
Improved build.gradle.
Added better console logging and startup messages.
Fixed UpdateChecker.java.
Added custom Skript API and modified what was already present.
Small changes to the documentation of EnumWrapper.java.
Moved classes around.
Removed redundant parentheses.
Removed redundant "class exists" checks.
Renamed variables for consistency.
Added to do comments for future reference.
Turned repeated "class exists" checks into Constants.
Added/removed spaces where it seemed necessary.
Improved many classes code-wise.
Replaced non jetbrains annotations with jetbrains'.
Improved documentation.
Improved patterns.
Set the more accurate expression type for some expressions, some of which i need reimplementation (ex. ExprIronGolemCreatedByPlayerState.java).
Made a big chunk of utility classes that help a LOT of syntax elements be more readable and more straight to the point.
Took some pieces of code from other places (skript and skbee) and added credits.
Added a lot of tests.
Full Changelog: https://github.com/JakeGBLP/Lusk/compare/1.2.1...1.3

Modern, user-friendly skript addon, perfect for beginners and experienced developers.