Add beforeChange and afterChange to GUIButtonPageChange

This commit is contained in:
NyCode
2021-04-29 20:04:58 +02:00
parent c3653f04cd
commit c088be8840

View File

@@ -6,7 +6,8 @@ import org.bukkit.inventory.ItemStack
class GUIButtonPageChange<T : ForInventory>(
icon: ItemStack,
calculator: GUIPageChangeCalculator,
onChange: ((GUIClickEvent<T>) -> Unit)?
beforeChange: ((GUIClickEvent<T>) -> Boolean)?,
afterChange: ((GUIClickEvent<T>) -> Unit)?
) : GUIButton<T>(icon, {
val currentPage = it.guiInstance.currentPage
@@ -18,13 +19,15 @@ class GUIButtonPageChange<T : ForInventory>(
)
if (newPage != null) {
val effect = (newPage.transitionTo ?: currentPage.transitionFrom)
?: PageChangeEffect.INSTANT
val changePage = beforeChange?.invoke(it) ?: true
it.guiInstance.changePage(effect, currentPage, newPage)
onChange?.invoke(it)
if (changePage) {
val effect = (newPage.transitionTo ?: currentPage.transitionFrom)
?: PageChangeEffect.INSTANT
it.guiInstance.changePage(effect, currentPage, newPage)
afterChange?.invoke(it)
}
}
})
})