Build strong the beams
Compatible Spigot versions: 1.17.0
This update adds argument type matching and overhauls code generation for the command framework. The Scribe project has also been removed.
Underneath the hood, we have streamlined the project's infrastructure and documentation. Documentation is now applied on the master branch
and the staging branch has been removed. The minimum Java version has also been bumped to Java 16.
Annotations
Annotation processing related packages have been moved to new project, Satisfactory.
- Add
@Lazy
- Remove
@ValueType
- redundant due to the introduction of records in JDK 16 - Remove
com.karuslabs.annotations.processor
- package has been moved to Satisfactory, a new annotation processing project.
Commons
We went full capitalist and privatized (and finalized) several package private fields and methods. ItemStack
builders
also received an styling update and safety improvements. More importantly, Chimera command code generation has been moved to it's own project,
Typist.
- Add
@Let
- Add
BlockDataBuilder
- Add
BundleBuilder
- Add
CompassBuilder
- Add
Describable
- Add
Argument.Builder.description(String)
- Add
ItemBuilder.banner()
- Add
ItemBuilder.blockData()
- Add
ItemBuilder.blockState()
- Add
ItemBuilder.book()
- Add
ItemBuilder.bundle()
- Add
ItemBuilder.compass()
- Add
ItemBuilder.crossbow()
- Add
ItemBuilder.enchantmentStorage()
- Add
ItemBuilder.firework()
- Add
ItemBuilder.fireworkEffect()
- Add
ItemBuilder.head()
- Add
ItemBuilder.knowledgeBook()
- Add
ItemBuilder.leatherArmour()
- Add
ItemBuilder.map()
- Add
ItemBuilder.potion()
- Add
ItemBuilder.suspiciousStew()
- Add
ItemBuilder.tropicalFishBucket()
- Add
LeatherArmourBuilder.helmet()
- Add
LeatherArmourBuilder.chestplate()
- Add
LeatherArmourBuilder.leggings()
- Add
LeatherArmourBuilder.boots()
- Add
Literal.Builder.description(String)
- Add
MapBuilder.empty()
- Add
MapBuilder.filled()
- Add
PotionBuilder.lingering()
- Add
PotionBuilder.potion()
- Add
PotionBuilder.splash()
- Change
@Source
to@Pack
- Change classes in
com.karuslabs.commons.item.builders
to be final - Change
Argument
's constructors to accept a description - Change
BookBuilder.of(Material)
toBookBuilder.of()
- only books contain aBookMeta
- Change
DispatcherCommand
's constructor to accept a description - Change
EnchantmentStorageBuilder.of(Material)
toEnchantmentStorageBuilder.of()
- only enchantment books contain aEnchantmentStorageMeta
- Change
FireworkBuilder.of(Material)
toFireworkBuilder.of()
- only firework rockets contain aFireworkMeta
- Change
FireworkEffectBuilder.of(Material)
toFireworkBuilder.of()
- only firework stars contain aFireworkEffectMeta
- Change
KnowledgeBookBuilder.of(Material)
toKnowledgeBookBuilder.of()
- only knowledge books contain aKnowledgeBookMeta
- Change
Literal
's constructors to accept a description - Change
SkullBuilder
toHeadBuilder
- Change
TropicalFishBucketBuilder.of(Material)
toTropicalFishBucketBuilder.of()
- only tropical fish buckets contain aTropicalFishBucketMeta
- Change the length at which a displayed command is trimmed when an error occurs from 10 to 20
- Fix incorrect capitalization of names in
com.karuslabs.commons.item.Head
- Fix commands not being sent to players after server reload - see #292
- Remove
com.karuslabs.commons.command.aot.*
- Remove methods prefixed with
as
incom.karuslabs.commons.item.ItemBuilder
- replaced with equivalent methods without prefixes - Remove
LeatherArmourBuilder.of(Material)
- replaced with equivalent methods for specific leather armour items - Remove
MapBuilder.of(Material)
- replaced with equivalent methods for empty and filled maps - Remove
PotionBuilder.of(Material)
replaced with equivalent methods for different potion types
Typist
Command code generation has been rewritten to support inferred parameters for methods annotated with @Bind
.
This project was originally part of commons but has since been moved into Typist since this release.
Typist Example Plugin
This project provides a minimal example of using Typist in a plugin.
Scribe
TL;DR - Remove Scribe
When we first released Scribe, we believed that annotation processing was the best solution to ensure that plugin.yamls are free of errors. In hindsight,
this approach proved to be both cumbersome to maintain for developers to use. The poor to lukewarm reception has only further exemplified this consensus.
Going forward, we will no longer be maintaining the Scribe project, however, it will be useable for the foreseeable future. Looking forward, we plan to develop
a new plugin.yaml lint replacement. To those who have been supporting the Scribe project, thank you.