- updated to **Minecraft 1.21**
- updated to **Kotlin 2.0.0**
- deprecated `Minecraft.serverPath` extension property in favor of new Minecraft variable `MinecraftServer.serverDirectory`
- temporary fix: the constant `Style.DEFAULT_FONT` field won't get reobfuscated, which caused an issue with text builders at runtime
- fix: return type of `ServerPlayer.serverWorld` was only `Level`, now it is `ServerLevel`
- updated to **Minecraft 1.20.5** by @MushroomMif
- Added `setItemName` function in `ItemBuilder` to easily set `minecraft:item_name` item component using Silk text builder
- `setPotion` function in `ItemBuilder` now takes `Holder<Potion>` instead of `Potion` as potions are now registered using `registerForHolder` method which returns `Holder<Potion>`
- Sideboard internals was updated to remove scoreboard teams hack and use new `display` field instead
- You can now specify which number format sideboard will use by new `numberFormat` property in the `sideboard` function, it is `BlankFormat` by default
- now using **Kotlin 1.9.23**
- `setSkullPlayer` now accepts a player `uuid` and/or player `name` and/or `texture` (notably allowing you to set a skull texture just by name)
- you can now specify any `BinaryFormat` in `silk-network` (previously only Cbor)
### Internal Changes
- `silk-network` now uses a FallbackProvider to inject a stream codec provided by each type of packet definition
- each custom silk-network packet still corresponds exactly to a custom payload packet with the given idea
- duplicated packet IDs will now result in a warning if they clash on lookup
- `silk-persistence` now migrates the legacy `fabrikmcData` tag from nbt and level data to the new `silkmc_persistent_data` tag
- updated to **Minecraft 1.20.4** by @MushroomMif
- updated to **Kotlin 1.9.21**
- sideboards now use the new scoreboard API by @MushroomMif
- red numbers are no longer displayed on the right
- updated to **Kotlin 1.9.10** and **Minecraft 1.20.2**
- added two **entity events**:
- `damageLivingEntity` (Called when a LivingEntity is being hurt. When this event occurs, at least one invulnerability check has already passed.)
- `checkInvulnerability` (Called when a regular invulnerability check is being performed. This event allows listeners to modify the result of that check.)
- reworked **player (network) events**:
- split `quitDuringLogin` into `quitDuringLogin` and `quitDuringConfiguration` (because of Minecraft now allowing for configuration at any time in-game)
- added `reason` property to quit events
- internal changes:
- silk-network packets now use the new payload based custom packets under the hood
- silk-persistence now uses a workaround for bypassing the datafixerupper from running on internal SavedData
- updated to Kotlin **1.9.0** and Minecraft **1.20.1**
- fixed #50 and #51 (incompatibility with some other mods using custom packets)
- added `font` and `insertion` fields to `literalText` builders
- fully removed all dependencies on Fabric API
- added extension on `MinecraftServer`:
- `server.players`
## Fixes
- fixed modmenu icon not showing up since rebranding - by @mooziii
- fixed sideboard ordering (sideboards do not use scores of zero anymore) - by @Krxwallo
## Internal
- improved async event test
- marked `ReadWriteMutex` as `@InternalSilkApi`
### silk-network
- removed usage of fabric-api from silk-network (now standalone)
- now sends custom payload packets directly
- each packet will now be sent on a channel of the same name as the packet identifier
- client to client packets can now be forwarded to multiple players at once
- it is now garuanteed that receivers won't be executed
concurrently
Even though it is only a minor version jump, this is **a major minecraft update under the hood**, so most mods need to be updated.
Older Silk versions for 1.19 (Silk 1.9.3 and lower) do not work for 1.19.3.
Internally Mojang changed major parts of the Registry and Command System, and there a changes all over the place since Minecraft 1.19.3 already contains several 1.20 features as opt in.
## Sideboard API changes
- added updatable sideboard line
- added `emptyLine` function
- allow to pass a normal flow as a line
- added `updatingLine` function as a replacement for the old lineChangingPeriodically
*all deprecations have quick fixes for alternatives*
- deprecated SimpleSideboardLine and ChangingSideboardLine with replacements
- deprecated `line { }`, `literalLine` and `FlowCollector<Component>.emitLiteralText`
## Events Changes
- added player login events to core (still part of the experimental events API, actual docs and info will follow)
- added entity events namespace as a starting and extension point for core and custom entity events
## Dependencies
Updated to fabric-language-kotlin 1.8.3+kotlin.1.7.10, and increased the minimum required version to 1.8.0+kotlin.1.7.0.
## Temporary usage requirement
Remember that in order to use this release you have to follow this guide:
https://gist.github.com/jakobkmar/5068aa14e37b859c3246de91cac74347
- compatibility with Minecraft 1.19.2 and 1.19.1
- a pretty big change is that the event API is now included in Silk, it is still experimental though, which is also the reason for this not being a major version bump and documentation being not that good yet
- you can now convert Minecraft random sources to Kotlin randoms and vice-versa