Skip to content

Releases: ShaneBeee/SkBee

Some Fixes [3.8.1]

17 Jan 00:02
Compare
Choose a tag to compare

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]

15 Jan 23:59
Compare
Choose a tag to compare

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.

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)
    Screenshot 2024-09-14 at 12 35 32 AM

Item Component Changes

Some exciting new Item Components to make your items even cooler.

See details

ADDED:

CHANGED:

  • Item Components now require Paper 1.21.3+ (Paper has a WAY better API for components than Bukkit does)
  • Overhauled food component...
Read more

Small Update [3.7.0]

04 Jan 01:14
81a0a14
Compare
Choose a tag to compare

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]

04 Jan 01:13
Compare
Choose a tag to compare

🎅 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]

18 Aug 14:47
Compare
Choose a tag to compare

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]

10 Aug 19:58
Compare
Choose a tag to compare

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 and give 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 NBT
  • component 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 item
  • custom nbt of %item% = The 'minecraft:custom_data' component of an item's NBT

Small Changes [3.5.9]

03 Aug 20:34
Compare
Choose a tag to compare

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]

29 Jul 17:03
Compare
Choose a tag to compare

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 using to player

CHANGED:

  • chunk generator is now enabled by default in config

Small Fixes [3.5.7]

16 Jul 05:30
Compare
Choose a tag to compare

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]

02 Jul 01:17
Compare
Choose a tag to compare

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