Releases: ShaneBeee/SkBee
Some Fixes [3.8.1]
This update comes quick after 3.8.0 due to some bugs that prevent loading.
3.8.0 was a pretty big release so please make sure to read the 3.8.0 change log before updating to 3.8.1
I wasn't planning on adding new features to a patch release, but I wanted to get those item components behind the feature flag before too many people started using them.
Caution
Due to API changes/new features in Skript 2.10.x, SkBee now requires Skript 2.10.x+
Warning
ItemComponents are now locked behind item_component
experimental feature.
Paper has these listed as experimental and may change anytime, possibly with breaking changes.
Use these item components with caution.
I mean to do this before the release of 3.8.0, but got sidetracked... my bad!
FIXED:
- Fixed a bug where some classes attempt to load on MC versions where they don't exist
- Fixed a loading error with ItemComponent utils causing the plugin to crash on old MC versions
ADDED:
- Added an expression for the potion type of an item
- Added a potion contents component section
- Added a section for applying potion effects/consume effects
CHANGED:
- Changed the structure of the death protection component to use a section for applying consume effects.
- Changed the structure of the consumable component to use a section for applying consume effects.
- ItemComponents are now locked behind
item_component
experimental feature.
Paper has these listed as experimental and may change anytime, possibly with breaking changes.
The Biggest One Yet [3.8.0]
This update comes with a whole whack-a-doo of new features, changes, fixes, etc.
Because this update is quite large, I have broken the changelog into a few sections, and included some spoilers.
Happy Skripting with SkBee!
Caution
Due to API changes/new features in Skript 2.10.x, SkBee now requires Skript 2.10.x+
General Changes
Here are some general changes that didn't fit into one of the below categories.
See details
FIXED:
- Fixed a bug on older server versions where spawning particles with force threw an error
- Fixed the team prefix/suffix expression returning empty strings when not set
- Fixed the objective name expression to properly use name/display name.
- Fixed the objective score expression throwing errors when attempting to set unmodifiable scores
- Fixed an issue with comparing structure sizes to vectors returning false
ADDED:
- Added an Audience type (for text component syntaxes)
- Added a condition to check if an objective/criteria has a modifiable score.
- Added support for statistics in the criteria expression
- Added support for text components in scoreboards
- Added an expression to get the tooltip lines of an item (Returned as a list of text components)
- Added a transmute recipe section
- Added an expression to get all possible blockdatas from a single block block
- Added an expression to get the resulting item when crafting a list of items
- Added a Skript type for PotionType
CHANGED:
- Changed how tag type of nbt expression returns list (hopefully producing the correct list type, or null)
- Changed the
chunk at coords
expression to optionally allow not loading/generating said chunk - Changed the "Give or Return Items" expression to always return a list.
- Changed the text component send/title effects to support sending to Audiences
- Changed the number format expression to return a proper string version.
- Changed the objective score expression to return null if the score was never set.
- Changed priority of chunk generator structure to load before events (this way you can use it in a world creator on load, without having to add a wait)
- Started using Skript's runtimes errors in a few places. This will grow over time.
Switch Cases
Switch cases are a tool that selects a code block to execute based on the value of a given expression.
They're basically a short form version of if/else if/else condition sections.
Check out The Docs for more examples.
See Details
There are 2 variants of switches:
- Switch section, which is used to run code in the cases
- Switch return expression section, which is used to return a value from the cases
There are 2 variants of cases:
- Case section, used to run multiple lines of code in the section. (Used in Switch section)
- Case inline effect, used to either return a single value (in Switch return) or run an effect (in Switch section) all in one line.
Examples
# Switching with an action using section cases
on break:
switch type of event-block:
case stone, andesite, diorite:
give player a diamond named "Stone Gem"
case dirt, grass block, gravel, sand:
give player an emerald named "Ground Gem"
default:
give player a stick named "Boring Stick"
# Switching with a return using section cases
on break:
set {_i} to switch return type of event-block:
case stone, andesite, diorite:
return a diamond named "Stone Gem"
case dirt, grass block, gravel, sand:
return an emerald named "Ground Gem"
default:
return a stick named "Boring Stick"
give player {_i}
# Switching with an action using inline cases
on break:
switch type of event-block:
case stone, andesite, diorite -> give player a diamond named "Stone Gem"
case dirt, grass block, gravel, sand -> give player an emerald named "Ground Gem"
default -> give player a stick named "Boring Stick"
# Switching with a return using inline cases
on break:
set {_i} to switch return type of event-block:
case stone, andesite, diorite -> a diamond named "Stone Gem"
case dirt, grass block, gravel, sand -> an emerald named "Ground Gem"
default -> a stick named "Boring Stick"
give player {_i}
Bound Changes
Bounds got a pretty big overhaul in terms of performance
See details
CHANGED:
- Deprecated bound coords expression (use Bound Locations/World expressions instead)
- Changed bounds to use a new region system, see below.
- Full bounds now don't actually stretch the locations. You can now modify if the bound is full or not afterwards.
- Bounds now use locations 2 different ways, see below for more info.
- Bound saving has changed:
- Previous behaviour: each bound would save when it was created/modified.
This could cause massive lag if creating/modifying many in a short period of time. - New behaviour: bounds are only saved every 5 minutes (off the main thread) and when the server stops.
This is a massive performance boost.
- Previous behaviour: each bound would save when it was created/modified.
ADDED:
- Added support for
set
in the bound locations expression (allowing you to set greater/lesser corners) - Added support for
add/remove
in the bound locations expression (allowing you to add/remove vectors to/from greater/lesser corners to offset size) - Added an expression to get the world of a bound
- Added an expression to get/set the full state of a bound
BOUND REGIONS:
Bounds internally now use a region system.
The issue before with bound events was when a player moved, ALL bounds were looped and checked if the player moved in/out of that bound.
Now, bounds are put into regions with a size of 16x16 chunks. So when a player moves, only the bounds within that region at the player are checked.
This GREATLY increases performance.
Spark Test:
- 19200 bounds
- 50 players (all moving)
Old System:
- SkBee was using about 50% of server resources per tick
New System:
- SkBee was using about 0.3% of server resources per tick
BOUND CREATION CHANGES:
When creating/resizing a bound, you have 2 options as what to pass in for your 2 points:
- LOCATIONS: If you use locations, your bound will be created using the exact location you pass in.
In the image on the left, locations were used, and the bound created using the exact location of the blocks.
Example:create bound with id "test" within (location of {_a}) and (location of {_b})
(a/b representing blocks) - BLOCKS: If you use blocks, 1 will be added to the x/y/z axes of the bound to account for the blocks on the edge.
In the image on the right, blocks were used. The x/y/z axes had 1 added to account for those blocks.
Example:create bound with id "test" within {_c} and {_d}
(c/d representing blocks)
Item Component Changes
Some exciting new Item Components to make your items even cooler.
See details
ADDED:
- Added a "ConsumeEffect" type (used in Consumable/DeathProtection components)
- Added 5 new functions, 1 for each consume effect
- Added a can break/can place on component section (called Adventure Predicate)
- Added a charged projectiles component expression
- Added a consumable component section
- Added a custom model data component section
- Added a death protection component section
- Added an enchantable component expression
- Added an equippable component section
- Added a firework explosion component section
- Added a fireworks component section
- Added a glider component expression
- Added an instrument component section
- Added an intangible projectile component expression
- Added an item model component expression
- Added a jukebox playable component section
- Added a repairable component expression
- Added a tooltip style component expression
- Added a use cooldown component section
- Added a use remainder component expression
CHANGED:
- Item Components now require Paper 1.21.3+ (Paper has a WAY better API for components than Bukkit does)
- Overhauled food component...
Small Update [3.7.0]
Warning
Due to changes in the Skript 2.10.x API, SkBee will be updating to require Skript 2.10.x+
This will be the last version to support Skript 2.9.x
There are two jar files below, the jar marked with "Skript-2.9" is for Skript 2.9.x servers
The other jar is for Skript 2.10.x+ servers
Important
^ Did you read that above?
Caution
No seriously... DID YOU READ THAT? ^^^ UP THERE!!!
ADDED:
- Added an option to use fallbacks in translate components
CHANGED:
- Cookie retrieve section will now run even if theres no cookie
FIXED:
- Fixed a performance issue with using the tag of nbt expression on the nbt of an item
- Fixed a bug where Skript's kick effect didn't work in cookie section
REMOVED:
The following items have been added to Skript, and therefore removed from SkBee if running Skript 2.10+
- Villager type/profession/level/experience (types and expressions)
- ItemFlag (type and expressions)
- PotionEffectCause (type)
- Last death location expression
- Block drop item event
- Breed event entities expression
- Entity breed event
- Entity is ticking condition
- FishHook in open water condition
- Beacon effect/activate/deactivate events
- Minecraft Tag elements (type/expressions/conditions)
Small Release [3.6.6]
🎅 HAPPY HOLIDAYS EVERYONE 🎄
THIS UPDATE:
FIXED:
- Fixed a null error when serializing NBT of an entity when for whatever reason (such as async operations) the NBT is empty.
- Fixed an issue with using the "force" option for particles on players on older server versions.
Another One [3.6.1]
Warning
Please see changelog for SkBee 3.6.0 for NBT changes
SkBee changed NBT syntax a bit in 3.6.0, so please do yourself a favour and read the changes.
🛠️ THIS UPDATE 🧑🏼🍳:
FIXED:
- Fixed an error when attempting to wake up a villager that isn't sleeping
- Fixed an issue with modifying
full nbt of %item%
throwing Minecraft component errors to console - Fixed an error when applying an attribute modifier to an entity which doesn't have that attribute.
- Fixed an issue where an empty list/array is left in an NBT compound after removing from it (and often returning an incorrect tag type)
- Fixed an error when running a Spigot server and another plugin has added AdventureAPI
- Fixed an error with component replace when a regex pattern is broken
- Fixed an issue when copying bounds, and the owner was copied into members
- Fixed an issue where the bound owners/members list was not cloned but referenced when copying a bound (therefor linking the two)
ADDED:
- Added crafter craft event (along with
event-string
event value which represents the recipe) - Added an expression that represents the result slot of crafting events.
- Added an expression to get all chunks within 2 locations (a cuboid)
- Added an effect to break blocks naturally but also play particles/sounds
Big Update [3.6.0]
Warning
🚨 ALERT ALERT 🚨
NBT syntax for items has changed once again since SkBee 3.5.x, please see "NBT CHANGES" at the bottom of this changelog.
Special 1.20.5+ NBT Notes:
Caution
- Item Format NBT has completely changed in Minecraft 1.20.5
- Please see McWiki for details about Minecraft's new component system
- Please see SkBee Wiki for a detailed explanation of NBT related changes in SkBee.
Note
- previously serialized items should properly update to the new NBT format
Important
🕹️ VERSION SUPPORT 🎮:
- SkBee requires Minecraft 1.19.4+
- Java 17+ required
- Support: Our team will only offer support for the latest release of each Minecraft major release, ex: 1.20.6 is supported, but 1.20-1.20.5 will NOT receive supported (SkBee may run on these versions, but our team will not provide support)
📝 SKRIPT SUPPORT 📑:
- This version requires Skript 2.7+ (This is due to API changes in Skript)
🛠️ THIS UPDATE 🧑🏼🍳:
ADDED:
- Added an option to set the
item_name
component of an item (Requires Minecraft 1.20.5+) [TODO LINK TO DOCS] - Added an expression to set the max stack size of an item (temporary until Skript updates their expression to support changing)
- Added an expression to modify enchantment glint of an item (Requires Minecraft 1.20.5+)
- Added an expression to get/modify bundle contents
- Added an expression to get/change the repair cost of items
- Added an expression to get/set biomes using NamespacedKeys (supports custom biomes)
- Added an option to get the vanilla NBT of an item (this will show components which don't normally show in NBT)
- Added an effect to open a real inventories to players (may provide better functionality than Skript's effects)
- Added support for Minecraft 1.21.1 NBT
CHANGED:
- Changed
probability
of apply potion effect (food component) to a float from 0-1 to match Minecraft
FIXED:
- Fixed the tool apply section to allow
default mining speed
to actually be optional - Fixed loading error on outdated versions for food component section
- Fixed an error when
damage per block
was missing from tool apply section - Fixed an error when
speed
<= 0 in tool section - Fixed an issue with the
give or drop
effect andgive or return
expressions adding extra large stack sizes to inventories - Fixed a very long standing issue where bounds failed to load location
bound values
when the world of said location isn't loaded yet - Fixed an error when adding to empty tab completions
REMOVED:
- Removed team register effect (after being deprecated for over a year)
NBT CHANGES:
After many complaints and quite a bit of confusion with the NBT changes, I've changed them again to hopefully be easier to understand/use.
Previous Behaviour in SkBee 3.5.x:
nbt of %item%
= The 'minecraft:custom_data' component of an item's NBTcomponent nbt of %item%
= The full component NBT of an item
New Behaviour in SkBee 3.6.x+:
nbt of %item%
= The full component NBT of an itemcustom nbt of %item%
= The 'minecraft:custom_data' component of an item's NBT
Small Changes [3.5.9]
Note
Special 1.20.5+ NBT Notes:
See previous few changelogs for NBT changes
Important
🕹️ VERSION SUPPORT 🎮:
- SkBee requires Minecraft 1.18.2+
- Java 17+ required
- Support: Our team will only offer support for the latest release of each Minecraft major release, ex: 1.20.6 is supported, but 1.20-1.20.5 will NOT receive supported (SkBee may run on these versions, but our team will not provide support)
📝 SKRIPT SUPPORT 📑:
- This version requires Skript 2.7+ (This is due to API changes in Skript)
🛠️ THIS UPDATE 🧑🏼🍳:
ADDED:
- Added an Attribute Modifier Type
- Added an expression to get/change attribute modifiers of items (including vanilla modifiers) and living entities
- Added an expression to get different properties of an attribute modifier
- Added a comparator to compare NamespacedKeys and Strings
- Added an event-item[type] for the entity shoot bow event
CHANGED:
- Changed bound center expression to include greater/lesser corner locations as well
- Changed attribute modifier section to support lower versions
- Changed attribute modifier section to support adding modifiers to living entities
FIXED:
- Fixed some errors when attribute modifier entries were incorrect/missing
Small Changes [3.5.8]
Special 1.20.5+ NBT Notes:
Caution
- Item Format NBT has completely changed in Minecraft 1.20.5
- Please see McWiki for details about Minecraft's new component system
- Please see SkBee Wiki for a detailed explanation of NBT related changes in SkBee.
Note
- previously serialized items should properly update to the new NBT format
Important
🕹️ VERSION SUPPORT 🎮:
- SkBee requires Minecraft 1.18.2+
- Java 17+ required
- Support: Our team will only offer support for the latest release of each Minecraft major release, ex: 1.20.6 is supported, but 1.20-1.20.5 will NOT receive supported (SkBee may run on these versions, but our team will not provide support)
📝 SKRIPT SUPPORT 📑:
- This version requires Skript 2.7+ (This is due to API changes in Skript)
🛠️ THIS UPDATE 🧑🏼🍳:
ADDED:
- Added a section to create food components on items (along with an effect to apply potion effects to said component)
- Added sections to create tool components and apply tool rules.
- Added a section to apply attribute modifiers to items (along with types for attribute operations and equipment slot groups)
- Added an effect to clear food/tool/attribute modifier components from an item (this will not clear vanilla components)
- Added an expression to get/set the player list name/header/footer as text component
FIXED:
- Fixed an issue where custom worlds with custom chunk generators would auto-load before the generator loads, thus failing to use the chunk generator
- Fixed an error with anvil prepare event when getting player on pre 1.21 MC versions.
- Fixed an issue with
force
not working on particles when usingto player
CHANGED:
- chunk generator is now enabled by default in config
Small Fixes [3.5.7]
Special 1.20.5 NBT Notes:
Caution
- Item Format NBT has completely changed in Minecraft 1.20.5
- Please see McWiki for details about Minecraft's new component system
- Please see SkBee Wiki for a detailed explanation of NBT related changes in SkBee.
Note
- previously serialized items should properly update to the new NBT format
Important
🕹️ VERSION SUPPORT 🎮:
- SkBee requires Minecraft 1.18.2+
- Java 17+ required
- Support: Our team will only offer support for the latest release of each Minecraft major release, ex: 1.20.6 is supported, but 1.20-1.20.5 will NOT receive supported (SkBee may run on these versions, but our team will not provide support)
📝 SKRIPT SUPPORT 📑:
- This version requires Skript 2.7+ (This is due to API changes in Skript)
🛠️ THIS UPDATE 🧑🏼🍳:
CHANGED:
- Remove bell ring event if running Skript 2.9+ (Skript has this event now)
- ClassInfos registered with a Registry now have a serializer
- Changed health scale expression to return null if player is not currently scaled
- Updated display item expression to support block displays
- Removed old block display item type expression
FIXED:
- Fixed a bug when loading world creators throwing an error about keys
- Fixed an error with InventoryView on older server versions
- Fixed an error when trying to get the NBT of AIR (AIR... AIIIRRRRRRRR... WHYYYYYYYYY)
- Fixed an issue with components not working with translations as objects
- Fixed health scale expression not resetting
More Fixes [3.5.6]
Special 1.20.5 NBT Notes:
Caution
- Item Format NBT has completely changed in Minecraft 1.20.5
- Please see McWiki for details about Minecraft's new component system
- Please see SkBee Wiki for a detailed explanation of NBT related changes in SkBee.
Note
- previously serialized items should properly update to the new NBT format
Important
🕹️ VERSION SUPPORT 🎮:
- SkBee requires Minecraft 1.18.2+
- Support: Our team will only offer support for the latest release of each Minecraft major release, ex: 1.20.6 is supported, but 1.20-1.20.5 will NOT receive supported (SkBee may run on these versions, but our team will not provide support)
📝 SKRIPT SUPPORT 📑:
- This version requires Skript 2.7+ (This is due to API changes in Skript)
🛠️ THIS UPDATE 🧑🏼🍳:
ADDED:
- Added an pattern to the text component expression to get a text component from a json string.
CHANGED:
- Changed tag type expression
tag type of tag %string% of %nbt%
to return null if tag is not set (previously returned TAG_END) - Reimplemented
current task id
expression - Changed the internals of MiniMessage a bit to handle double hashtag (Skript 2.9+ no longer needs these in strings)
FIXED:
- Fixed an issue with cancelling current task not working