Releases: DevNatan/inventory-framework
v3.0.0-rc.3 (09-13-2023)
🎉 New Features
- Now components overlap each other based on rendering priorities, basically, two items can now be placed in the same slot and they will render properly based on visibility conditions like
displayIf
oronRender
/rendered
result (#433) - New
displayIf
with context as parameter to be able to usedisplayIf(booleanState::get)
(#436) - Better Kotlin interop and extensions to
kotlin.time
package (#439) - New
back()
to navigate back to the previous view. UseonResume
to catch when "back" is used. See Creating Flows with back() and onResume on Wiki (#443) - Apply default configuration to all views. See Default Configuration on Wiki (#444)
- New item
updateOnStateChange(State)
(that's the same aswatch
but more explicit) (#447) interactionDelay(Duration)
allows set a interval between player interactions (#460)- Added
context
andindex
parameters to Pagination state (#456) - New
hideIf
(the opposite ofdisplayIf
) to hide items based on a condition (#467) - New
computedPaginationState
andlazyPaginationState
(#458)
🐛 Bug fixes
- Inventory transition don't work in newer versions, now we close inventory before transitioning to others via
open
(#457) - Players being able to remove items from view inventory by clicking in their own inventory (#459)
- Issues with pagination items updates also not being able to use
displayIf
orwatch
now fixed (#466)
📘 Documentation
- Basic Usage on Wiki updated with more clear examples about configuration and more comprehensive item rendering explanation
- Layouts on Wiki reworked. Now explains about
layoutSlot
andavailableSlot
behavior and limitations - Navigating Between Views on Wiki reworked.
- Pagination on Wiki updated, now explains about diferences between data sources and asynchronous pagination nature
🧩 API changes
- StateValue from API is now an interface also Pagination now extends StateValue (#434)
- Better Kotlin interop & Bukkit platform
View
do not implement Bukkit'sInventoryHolder
anymore (#439) - New
IndexSlotFunction<T>
andIndexSlotConsumer<T>
interfaces (#440) - ComponentBuilder's
watch(State)
is now deprecated and scheduled for removal in v3.1.0 (#447) - View's
onInit(ViewConfigBuilder)
moved to inventory-framework-platform module (#448)
🛠️ Internal changes
v3.0.0-rc.2 (08-15-2023)
🎉 New Features
- New
openForPlayer()
andopenForEveryone()
with initial data parameter, like in ViewFrame (#421) - Minecraft 1.19 and 1.20 support in dynamic title update (#423)
- New
updateTitleForPlayer(title, player)
to update title for a specific player (#424) - Asynchronous Pagination (experimental) (#432)
🐛 Bug fixes
- Pagination items with dynamic rendering not reacting to global update (#425)
- Update are no more called for static items (#425)
⚡Performance improvements
- Pagination components are now registered lazily (#425)
- Component updates triggered by
watch(State)
no more updates the entire view, just the component itself (#425)
📘 Documentation
- Pagination on Wiki had its structure reformulated to simplify the reading, go more straight to the point, added some missing topics to explain better about pagination with dynamic items and data source
- Page "Inventory Title Programmatic Update" on Wiki reworked and renamed to Dynamic Title Update
🧩 API changes
- Internal state and component management related methods were marked as Internal API
🛠️ Internal changes
- Project module names changed now every module has "inventory-framework-" prefix
- Removed kotlin-dsl and feature-event-bus modules
Full Changelog: v3.0.0-rc.1...v3.0.0-rc.2
v3.0.0-rc.1 (08-07-2023)
🐛 Bug fixes
- Fix relocation warn being sent even in the wrong conditions. Now we check if IF's main class is available in runtime and plugin "InventoryFramework" is enabled (#412)
- Null
getPlayer()
in RenderContext (#414) - An error thrown when a empty pagination source is provided (#415)
- Dynamically rendered items in pagination being positioned in the wrong place (#416)
🎉 New Features
- New
ViewFrame.open(view, player, data)
overload (#417) - New
item.updateOnClick()
to trigger context update on item click (#418)
🧩 API changes
initialState()
is now mutable so its value can be changed (#413)
🔧 Other changes
- Bump junit from 5.9.3 to 5.10.0 (#406)
Full Changelog: v3.0.0-beta...v3.0.0-rc.1
v3.0.0-beta (08-04-2023)
Inventory Framework is now published to Maven Central!
This release introduces Shared Contexts (#409) preview also fixes with artifacts publication issues.
Full Changelog: v3.0.0-alpha...v3.0.0-beta
v3.0.0-alpha (08-01-2023)
🐛 Bug fixes
- Infer container size automatically when layout is present (#377)
- JDK and PaperSpigot versions compatibility issues (#384)
- Change layout component registration order to ensure it works with PaginationState (#399)
🎉 New Features
- Item render and update handler shortcuts (#274)
- Simplified way to conditional item rendering with
displayIf(BooleanSupplier)
(#338) - Support more inventory types (#343)
- Allow to change component position while rendering (#395)
📘 Documentation
- Added GIF to Counter code sample
- Added Per-player Data Source topic to Pagination feature documentation
🧩 API changes
- Internal data used in
initialState
is now available in Internal API which allows Features System to use it (#326) - New
unsetSlot
to create items with unset slots (#395) - New item click handler
onClick(Runnable)
overload (#400)
🛠️ Internal changes
🔧 Other changes
- Bump kotlin from 1.8.22 to 1.9.0 by @dependabot in #390
- Bump org.danilopianini.publish-on-central from 5.0.9 to 5.0.10 by @dependabot in #397
Full Changelog: v3.0.0-EAP...v3.0.0-alpha
v3.0.0-EAP (06-07-2023)
Version 3 Release Preview.
Please refer to Migrating to version 3 on Wiki and Installation for migration details.
This version is NOT production ready.
Full Changelog: 2.5.4-rc.1...v3.0.0-EAP
v2.5.4-rc.1 (10-09-2022)
🐛 Bug fixes
- Fixed context data inheritance (#219)
- Fixed NullPointerException in context paginator (#224)
- Fixed fallback navigation item retrieval compatibility (#228)
- Fixed "Update job not started" error (#232)
- Pagination context getSlot() returning index instead of current slot (#235)
- Context getCurrentItem always returning null (#235)
- Try to fix ConcurrentModificationException on open (#237)
- Fixed page switch issues due to dynamic pagination source (#233, #238)
- Fixed wrong update interval when using schedule update with Duration as parameter (#236)
🎉 New Features
- Context History feature (#120)
- Event Bus feature (#234)
onSlotRender
handler prototype (#235)- Allows nullable values on pagination sources (#235)
📘 Documentation
- Code preview on Wiki.
🧩 API changes
- Provide unique element index for pagination (#239)
🔧 Other changes
🛠️ Internal changes
-
Now clear() supports immediate clear when context is on entity container (#235)
-
Bump com.diffplug.spotless from 6.9.1 to 6.10.0 (#214)
Full Changelog: 2.5.4-beta...v2.5.4-rc.1
v2.5.4-beta
🐛 Bug fixes
- Fixed pagination navigation (#196)
- User-defined pattern render on paginated views (#196)
- Optimize and fix some pagination issues like "At least one pagination must be set" (#201)
- Provided/asynchronous source is now updated on container when view is updated (#201)
- Close handler Bukkit player retrieval (#202)
- Allow users to ignore navigation item factory (#205)
- Allow users set navigation item slot by
item.withSlot(...)
(#206) - Fix "Slot conversion not supported" (#208)
- Instantiate entity container properly, solve
isOnEntityContainer
checks (#211)
🎉 New Features
- Auto-slot-fill through
availableSlot(...)
and unified layout, use layout on regular and paginated views (#174) - Custom UnknownReferenceException to
ref(String)
and nullable refrefOrNull(String)
(#210) - Allow slot clear on update, a slot can now be cleared with
clear()
(#209)
⚡Performance improvements
- Removed nextTick from updateSlot call (#203)
- Layouts are now resolved on view initialization not on render (#174)
🧩 API changes
- Asynchronous pagination provider CompletableFuture value changed from
List<T>
toList<? extends T>
- ItemWrapper
asBukkitItem
andisEmpty
is now public (#201) - New AsyncPaginationDataState
onSuccess(BiConsumer<..., List<? extends T>>)
to get result on example AbstractView#nextTick
is now public- Shortcut to
item.onRender
withitem.rendered(::createItem)
anditem.onUpdate
withitem.updated(::updatedItem)
📘 Documentation
- Version compatibility table updated on Wiki
- Improved
setSource(Function<...>)
documentation with a real world example
🛠️ Internal changes
- Pagination source now can only be set once (#201).
🔧 Other changes
- Added license scan report and status (#198)
- Update mockito monorepo to v4.7.0 (#197)
- Update plugin com.diffplug.spotless to v6.9.1 (#194)
- Update dependency gradle to v7.5.1 (#189)
- Pipeline interceptor tests (#199)
Full Changelog: 2.5.3...v2.5.4-beta
v2.5.3
🐛 Bug fixes
- Fix scheduled updates (#175)
- UnsupportedOperationException when use getPlayer in PaginatedViewSlotContext (#183)
- Skip layout render if signature is not checked (#185)
- IllegalStateException when use setSource in PaginatedView (#172)
🛠️ Other changes
- Test-only workflow (#154)
- Update code formatter (#173)
- Update plugin com.diffplug.spotless to v6.9.0 (#182)
- Update junit5 monorepo to v5.9.0 (#179)
- Update ASzc/change-string-case-action action to v2 (#168)
- Update bug report issue template (#171)
Full Changelog: 2.5.2...2.5.3
v2.5.2
🐛 Bug fixes
- Nested view open by context ClassCastException (#164)
- Lately fetch update job initiator (#163)
- Context update implementation (#162)
🔧 API changes
- Change ViewItem click handler type (#161)
🛠️ Internal changes
- Update gradle to v7.5 (#155)
- Update gradle/gradle-build-action digest to cd3cedc (#157)
- Create generate artifacts workflow (#165)
Full Changelog: 2.5.1...2.5.2