Silk [sɪlk] is a Minecraft API for Kotlin - targetting Fabric, Quilt and Paper. Join our Discord or Matrix Space
Features of the API:
- an inventory GUI API
- a Kotlin wrapper for Brigadier
- a Kotlin DSL for creating complex
Textobjects - coroutine utilities and tasks
- kotlinx.serialization support for Minecraft classes
- a scoreboard (sideboard) API
ItemStackutilities- serialization of any class to NBT with kotlinx.serialization
- an NBT builder
- an API for storing persistent data on Chunks, Entities etc
- kotlinx.serialization based networking (packets c2s, s2c and c2c)
- Kotlin Compose UI support
- general extensions for Entities, Worlds and more
- geometry utilities
Docs
The docs link can be found on Silk GitHub.
Read them to get started with each module and see how to add it to your Gradle project.
Note: Currently, the ingame ID of the wrapper mod is silk-all
License
Current versions of Silk are available under the GPL-3.0, while older versions below 1.5.1 of (at that time FabrikMC) have been shared under the Apache-2.0 License.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
|
R
1.11.1
|
22h ago | 1 | |||
|
R
1.11.0
|
22h ago | 1 | |||
|
R
1.10.7
|
22h ago | 1 | |||
|
R
1.10.6
|
22h ago | 1 | |||
|
R
1.10.5
|
22h ago | 1 | |||
|
A
1.10.4
|
22h ago | 1 | |||
|
R
1.10.3
|
22h ago | 1 | |||
|
R
1.10.2
|
22h ago | 1 | |||
|
R
1.10.1
|
22h ago | 1 | |||
|
R
1.10.0
|
22h ago | 1 | |||
|
R
1.9.8
|
22h ago | 1 | |||
|
R
1.9.7
|
22h ago | 1 | |||
|
R
1.9.6
|
22h ago | 1 | |||
|
R
1.9.5
|
22h ago | 1 | |||
|
R
1.9.4
|
22h ago | 1 | |||
|
R
1.9.2
|
22h ago | 1 | |||
|
B
1.9.1
|
22h ago | 1 | |||
|
R
1.9.0
|
22h ago | 1 | |||
|
R
1.8.1
|
22h ago | 1 | |||
|
R
1.8.0
|
22h ago | 1 | |||
|
R
1.7.4
|
22h ago | 1 | |||
|
R
1.7.3
|
22h ago | 1 | |||
|
R
1.7.2
|
22h ago | 1 | |||
|
R
1.7.1
|
22h ago | 1 | |||
|
R
1.7.0
|
22h ago | 1 | |||
|
R
1.6.2
|
22h ago | 1 | |||
|
R
1.6.1
|
22h ago | 1 | |||
|
R
1.6.0
|
22h ago | 1 | |||
|
R
1.5.3
|
22h ago | 1 | |||
|
R
1.5.2
|
22h ago | 1 | |||
|
R
1.5.1
|
22h ago | 1 | |||
|
R
1.5.0
|
22h ago | 1 | |||
|
R
1.4.4
|
22h ago | 1 | |||
|
R
1.4.3
|
22h ago | 1 | |||
|
R
1.4.2
|
22h ago | 1 | |||
|
R
1.4.1
|
22h ago | 1 | |||
|
R
1.4.0
|
22h ago | 1 | |||
|
R
1.3.1
|
22h ago | 1 | |||
|
R
1.3.0
|
22h ago | 1 | |||
|
R
1.2.2
|
22h ago | 1 | |||
|
R
1.2.1
|
22h ago | 1 | |||
|
R
1.2.0
|
22h ago | 1 | |||
|
B
0.1.1
|
22h ago | 1 |
- Support 26.3
- 26.2
- Left/Right Click in GuiActionType ([#91 by kxmpxtxnt](https://github.com/SilkMC/silk/pull/91))
- Add Minecraft 26.1 support
- updated to 1.21.11
- updated to 1.21.9
- updated to 1.21.8
- updated to **Minecraft 1.21.6**
- updated to **Minecraft 1.21.5**
- updated to **Minecraft 1.21.4**
- updated to **Minecraft 1.21**
- updated to **Kotlin 2.0.0**
- deprecated
Minecraft.serverPathextension property in favor of new Minecraft variableMinecraftServer.serverDirectory
- persistence: ensure that
CompoundSavedDataalways saves to world.datfile
- temporary fix: the constant
Style.DEFAULT_FONTfield won't get reobfuscated, which caused an issue with text builders at runtime - fix: return type of
ServerPlayer.serverWorldwas onlyLevel, now it isServerLevel
- updated to **Minecraft 1.20.5** by @MushroomMif
- Added
setItemNamefunction inItemBuilderto easily setminecraft:item_nameitem component using Silk text builder setPotionfunction inItemBuildernow takesHolder<Potion>instead ofPotionas potions are now registered usingregisterForHoldermethod which returnsHolder<Potion>- Sideboard internals was updated to remove scoreboard teams hack and use new
displayfield instead - You can now specify which number format sideboard will use by new
numberFormatproperty in thesideboardfunction, it isBlankFormatby default - now using **Kotlin 1.9.23**
setSkullPlayernow accepts a playeruuidand/or playernameand/ortexture(notably allowing you to set a skull texture just by name)- you can now specify any
BinaryFormatinsilk-network(previously only Cbor)
### Internal Changes
silk-networknow 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-persistencenow migrates the legacyfabrikmcDatatag from nbt and level data to the newsilkmc_persistent_datatag
- 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
quitDuringLoginintoquitDuringLoginandquitDuringConfiguration(because of Minecraft now allowing for configuration at any time in-game) - added
reasonproperty 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
fontandinsertionfields toliteralTextbuilders - fully removed all dependencies on Fabric API
- updated to **Minecraft 1.20**
- updated to Kotlin 1.8.21
## Public API for server and player list access
- added multiple properties to the
Silkobject: server(nullable)serverOrThrow(non-nullable)players(non-nullable list, can be empty)
- deprecated previous (delicate) property:
Silk.currentServer
- 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
ReadWriteMutexas@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
- fixed ServerEvents.postStart 706f592 by @Krxwallo
- updated to Minecraft 1.19.4
- fixed an issue where Brigadier "swallowed" exceptions during command execution
- updated to Kotlin 1.8.10
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.
- added updatable sideboard line
- added
emptyLinefunction - allow to pass a normal flow as a line
- added
updatingLinefunction as a replacement for the old lineChangingPeriodically
- all deprecations have quick fixes for alternatives*
- deprecated SimpleSideboardLine and ChangingSideboardLine with replacements
- deprecated
line { },literalLineandFlowCollector<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
- compatibility with 1.19
- new API features