From 09c101304936c74ac14520d498505af940bdaa6d Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 21:13:33 +0100 Subject: [PATCH 1/9] feat: add ViewIcon and ViewIconColor classes for enhanced inventory icon management --- gradle.properties | 2 +- .../inventory/framework/view/icon/ViewIcon.kt | 28 +++++++++++++++++++ .../framework/view/icon/ViewIconColor.kt | 11 ++++++++ .../framework/view/icon/ViewIconType.kt | 28 +++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIcon.kt create mode 100644 surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor.kt create mode 100644 surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt diff --git a/gradle.properties b/gradle.properties index 5543a359..182dc58c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=1.21.11 group=dev.slne.surf -version=1.21.11-2.63.1 +version=1.21.11-2.63.2 relocationPrefix=dev.slne.surf.surfapi.libs snapshot=false diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIcon.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIcon.kt new file mode 100644 index 00000000..61c63cf0 --- /dev/null +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIcon.kt @@ -0,0 +1,28 @@ +package dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.icon + +import dev.slne.surf.surfapi.bukkit.api.builder.buildItem +import dev.slne.surf.surfapi.core.api.messages.adventure.key +import io.papermc.paper.datacomponent.DataComponentTypes +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.ItemType + +fun viewIcon( + icon: ViewIconType, + color: ViewIconColor, + init: ItemStack.() -> Unit = {} +) = ViewIcon(icon, color).build(init) + +class ViewIcon( + val icon: ViewIconType, + val color: ViewIconColor, +) { + val itemModel: String + get() = "surf_menu_icon_${color.configName}_${icon.configName}" + + @Suppress("UnstableApiUsage") + fun build(init: ItemStack.() -> Unit) = buildItem(ItemType.PAPER) { + init() + + setData(DataComponentTypes.ITEM_MODEL, key("nexo", itemModel)) + } +} diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor.kt new file mode 100644 index 00000000..c7b94368 --- /dev/null +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor.kt @@ -0,0 +1,11 @@ +package dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.icon + +enum class ViewIconColor( + val configName: String +) { + RED("red"), + BLUE("blue"), + WHITE("white"), + GREEN("green"), + YELLOW("yellow"), ; +} \ No newline at end of file diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt new file mode 100644 index 00000000..cca0fa42 --- /dev/null +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt @@ -0,0 +1,28 @@ +package dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.icon + +enum class ViewIconType( + val configName: String +) { + ARROW_DOWN("arrow_down"), + ARROW_UP("arrow_up"), + ARROW_LEFT("arrow_left"), + ARROW_RIGHT("arrow_right"), + CROSS("cross"), + CHECK("check"), + USERS("users"), + HOME("home"), + COG("cover"), + BELL("bell"), + PLUS("plus"), + MINUS("minus"), + EQUALS("equals"), + MENU("menu"), + ARROW_PREVIOUS("arrow_previous"), + ARROW_NEXT("arrow_next"), + RELOAD("reload"), + QUESTION_MARK("question_mark"), + EXCLAMATION_MARK("exclamation_mark"), + QUESTION("question"), + SEARCH("search"), + CIRCLE("circle"), ; +} \ No newline at end of file From 2710a5a3aba0ded6759f0b9fbba23b2ba0930482 Mon Sep 17 00:00:00 2001 From: twisti Date: Sat, 14 Mar 2026 21:24:52 +0100 Subject: [PATCH 2/9] feat: rename header parameter to defaultHeader and update context handling in AbstractSurfView --- .../framework/view/AbstractSurfView.kt | 37 +++++++++---------- .../view/PaginatedSurfViewDSLImpl.kt | 22 +---------- .../framework/view/SurfViewBuilder.kt | 8 ++-- .../framework/view/SurfViewDSLImpl.kt | 33 +---------------- .../framework/view/SurfViewLifecycleDsl.kt | 20 +++++++++- .../components/ViewContainerTitleComponent.kt | 2 +- .../view/container/dsl/ViewContainerDSL.kt | 26 +++++++++++++ .../server/packet/lore/PacketLoreListener.kt | 6 ++- 8 files changed, 77 insertions(+), 77 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt index b606edbd..17a93c61 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt @@ -43,21 +43,22 @@ import org.bukkit.plugin.java.JavaPlugin * view.open(player) * ``` * - * @param header the plain-text title string rendered in the inventory's title bar + * @param defaultHeader the plain-text title string rendered in the inventory's title bar * @see surfView * @see paginatedSurfView * @see SurfViewSettings */ @Suppress("UnstableApiUsage") abstract class AbstractSurfView( - private val header: String, + private val defaultHeader: String, ) : View() { /** * The [SurfViewSettings] controlling layout, cancel behaviours, font, and alignment. * Defaults to [SimpleViewSettings] with all defaults applied. */ open val settings: SurfViewSettings = SimpleViewSettings() - private val container = ViewContainer() + + private val containerState = lazyState { _ -> ViewContainer() } /** * Called during [onInit] after the container defaults are applied. @@ -111,39 +112,39 @@ abstract class AbstractSurfView( * Applies modifications to the [ViewContainer] and optionally updates the inventory title. * * The [block] is executed within a [ViewContainerModificationContext] that provides - * component management functions. If [updateContext] is provided: + * component management functions. If [context] is provided: * - For an [OpenContext], the title is set via `modifyConfig`. * - For any other context, `updateTitleForEveryone` is called to update all viewers. * - * @param updateContext optional context used to propagate the title change; `null` skips + * @param context optional context used to propagate the title change; `null` skips * the title update (useful during initial setup) * @param block modifications to apply to the [ViewContainer] */ protected fun modifyContainer( - updateContext: Context? = null, + context: Context, block: context(ViewContainerModificationContext) () -> Unit ) { + val container = containerState.get(context) + context(ViewContainerModificationContext(container)) { block() } - if (updateContext != null) { - if (updateContext is OpenContext) { - updateContext.modifyConfig { - title(container.render()) - } - } else { - updateContext.updateTitleForEveryone(container.render()) + if (context is OpenContext) { + context.modifyConfig { + title(container.render()) } + } else { + context.updateTitleForEveryone(container.render()) } } - private fun applyContainerDefaults() { - modifyContainer { + private fun applyContainerDefaults(context: Context) { + modifyContainer(context) { addChild(ViewContainerGlyphComponent(settings.rows)) addChild( ViewContainerTitleComponent( - title = header, + title = defaultHeader, font = settings.font, charSpacing = ViewContainerTitleComponent.CHAR_SPACING, textAlignment = settings.headerTextAlignment @@ -169,8 +170,6 @@ abstract class AbstractSurfView( } final override fun onInit(config: ViewConfigBuilder) { - applyContainerDefaults() - with(settings) { if (cancelOnPickup) config.cancelOnPickup() if (cancelOnDrag) config.cancelOnDrag() @@ -180,12 +179,12 @@ abstract class AbstractSurfView( onViewInit(config) - config.title(container.render()) config.size(settings.rows.rows) config.type(ViewType.CHEST) } final override fun onOpen(open: OpenContext) { + applyContainerDefaults(open) onViewOpen(open) } diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewDSLImpl.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewDSLImpl.kt index 0e99d24b..16cadf28 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewDSLImpl.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewDSLImpl.kt @@ -70,26 +70,8 @@ abstract class PaginatedSurfViewDSLImpl @PublishedApi internal constructor( ctx.containerDefaults?.invoke(modificationCtx, ref) } - /** - * Modifies the [ViewContainer] of this paginated view from within a lifecycle callback. - * - * Only callable inside a [PaginatedSurfViewRef] context (i.e. within lifecycle callbacks). - * Delegates to the internal `modifyContainer` method of [AbstractSurfView]. - * - * @param updateContext optional context used to propagate the updated title; - * pass `null` to skip the title update - * @param block modifications to apply to the [ViewContainer] - */ - context(_: PaginatedSurfViewRef) - fun modifyContainer( - updateContext: Context? = null, - block: context(ViewContainerModificationContext) () -> Unit - ) { - modifyContainer0(updateContext, block) - } - - private fun modifyContainer0( - updateContext: Context? = null, + internal fun modifyContainer0( + updateContext: Context, block: context(ViewContainerModificationContext) () -> Unit ) = modifyContainer(updateContext, block) } diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt index 01fef9ac..a0312d7d 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt @@ -30,11 +30,11 @@ import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.pagination.Abst * @see paginatedSurfView * @see AbstractSurfView */ -inline fun surfView(header: String, block: context (SurfViewContext, SurfViewRef) () -> Unit): AbstractSurfView { +inline fun surfView(header: String, block: context (SurfViewContext) () -> Unit): AbstractSurfView { val ctx = SurfViewContext() val ref = SurfViewRef() - context(ctx, ref) { + context(ctx) { block() } @@ -75,12 +75,12 @@ inline fun surfView(header: String, block: context (SurfViewContext, SurfViewRef */ inline fun paginatedSurfView( header: String, - block: context (PaginatedSurfViewContext, PaginatedSurfViewRef) () -> Unit + block: context (PaginatedSurfViewContext) () -> Unit ): AbstractPaginatedSurfView { val ctx = PaginatedSurfViewContext() val ref = PaginatedSurfViewRef() - context(ctx, ref) { + context(ctx) { block() } diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewDSLImpl.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewDSLImpl.kt index ee72a567..0d74b861 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewDSLImpl.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewDSLImpl.kt @@ -66,37 +66,8 @@ abstract class SurfViewDSLImpl @PublishedApi internal constructor( ctx.containerDefaults?.invoke(modificationCtx, ref) } - /** - * Modifies the [ViewContainer] of this view from within a lifecycle callback. - * - * This function is only callable inside a [SurfViewRef] context (i.e. within lifecycle - * callbacks). It is a type-safe forwarding wrapper that delegates to the internal - * `modifyContainer` method of [AbstractSurfView]. - * - * ```kotlin - * onFirstRender { - * with(view) { - * modifyContainer { - * blockRow(5) - * } - * } - * } - * ``` - * - * @param updateContext optional context used to propagate the updated title; - * pass `null` to skip the title update - * @param block modifications to apply to the [ViewContainer] - */ - context(_: SurfViewRef) - fun modifyContainer( - updateContext: Context? = null, - block: context(ViewContainerModificationContext) () -> Unit - ) { - modifyContainer0(updateContext, block) - } - - private fun modifyContainer0( - updateContext: Context? = null, + internal fun modifyContainer0( + updateContext: Context, block: context(ViewContainerModificationContext) () -> Unit ) = modifyContainer(updateContext, block) } diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewLifecycleDsl.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewLifecycleDsl.kt index 0e13d5b7..c59aadf4 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewLifecycleDsl.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewLifecycleDsl.kt @@ -160,6 +160,24 @@ fun containerDefaults(block: context (@Inventory ctx.containerDefaults = block } + +/** + * Modifies the [ViewContainer] of this view from within a lifecycle callback. + * This function is only callable inside a [AbstractSurfViewRef] context (i.e. within lifecycle + * callbacks). It is a type-safe forwarding wrapper that delegates to the internal `modifyContainer` method of [AbstractSurfView]. + * + */ +context(ref: AbstractSurfViewRef) +fun Context.modifyContainer( + block: context(ViewContainerModificationContext) () -> Unit +) { + when (val view = ref.getRegisteredView()) { + is SurfViewDSLImpl -> view.modifyContainer0(this, block) + is PaginatedSurfViewDSLImpl -> view.modifyContainer0(this, block) + else -> error("Unknown view type: ${view::class}") + } +} + /** * Configures the [SimpleViewSettings] for this simple (non-paginated) view. * @@ -225,4 +243,4 @@ fun settings(block: @InventoryFrameworkDSL PaginatedViewSettingsBuilder.() -> Un context(ctx: PaginatedSurfViewContext) fun layoutTarget(target: Char) { ctx.layoutTarget = target -} +} \ No newline at end of file diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt index 60f6838e..26a0a584 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt @@ -33,7 +33,7 @@ import net.kyori.adventure.key.Key * @param charSpacing the pixel spacing to insert between each character * @param textAlignment the [TextAlignment] controlling horizontal positioning */ -internal class ViewContainerTitleComponent( +class ViewContainerTitleComponent( title: String, private val font: Key, charSpacing: Int, diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerDSL.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerDSL.kt index c68cd11d..5e4b5083 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerDSL.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerDSL.kt @@ -1,8 +1,10 @@ package dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.dsl +import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.AbstractSurfViewRef import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.component.ViewContainerComponent import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.component.components.ViewBlockCellComponent import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.component.components.ViewContainerBackHintComponent +import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.component.components.ViewContainerTitleComponent import it.unimi.dsi.fastutil.ints.IntCollection import it.unimi.dsi.fastutil.ints.IntLists @@ -164,4 +166,28 @@ fun blockColumn(column: Int, exemptRows: IntCollection = IntLists.EMPTY_LIST) { context(context: ViewContainerModificationContext) fun backHint() { addChild(ViewContainerBackHintComponent) +} + +/** + * Sets a title header for the [ViewContainer][dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.container.ViewContainer] by removing any existing title component + * and adding a new `ViewContainerTitleComponent` with the specified header text. + * + * @param header The text to set as the title for the container. + * @param context Provides access to the container modification API for the current view. + * @param ref A deferred reference to the associated view, providing configuration details + * such as font and text alignment settings. + */ +context(context: ViewContainerModificationContext, ref: AbstractSurfViewRef) +fun header(header: String) { + removeChildrenOfType() + + val settings = ref.getRegisteredView().settings + addChild( + ViewContainerTitleComponent( + header, + settings.font, + ViewContainerTitleComponent.CHAR_SPACING, + settings.headerTextAlignment + ) + ) } \ No newline at end of file diff --git a/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt b/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt index ec67a149..13be6c4a 100644 --- a/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt +++ b/surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/packet/lore/PacketLoreListener.kt @@ -46,7 +46,7 @@ object PacketLoreListener : PacketListener { } @ClientboundListener - fun onContainerData(event: ClientboundContainerSetSlotPacket): ClientboundContainerSetSlotPacket { + fun onSetSlotPacket(event: ClientboundContainerSetSlotPacket): ClientboundContainerSetSlotPacket { return ClientboundContainerSetSlotPacket( event.containerId, event.stateId, @@ -99,6 +99,10 @@ object PacketLoreListener : PacketListener { .toList() ) + if (updatedNmsLore == nmsLore) { + return item + } + item.set(DataComponents.LORE, updatedNmsLore) CustomData.update(DataComponents.CUSTOM_DATA, item) { tag -> tag.store(ORIGINAL_LORE_KEY.asString(), ItemLore.CODEC, nmsLore) From 630a5c32606bf422d3a46e38f4c56d70b73cabca Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 23:07:13 +0100 Subject: [PATCH 3/9] feat: pass previous state to viewFrame.open for improved context handling --- .../bukkit/api/inventory/framework/view/AbstractSurfView.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt index 17a93c61..10ab0926 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt @@ -223,11 +223,13 @@ abstract class AbstractSurfView( } val player = click.player + val previousState = viewer.previousContext.initialData viewer.previousContext = null click.closeForPlayer() + player.scheduler.run(JavaPlugin.getProvidingPlugin(javaClass), { - viewFrame.open(previousView.javaClass, player) + viewFrame.open(previousView.javaClass, player, previousState) }, null) } } From 2f99d751ff7175e4a771869964089d6e44e78c6e Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 23:07:20 +0100 Subject: [PATCH 4/9] feat: adjust positionalShift for improved spacing in ViewContainerBackHintComponent --- .../component/components/ViewContainerBackHintComponent.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerBackHintComponent.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerBackHintComponent.kt index f607f6d4..80359be9 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerBackHintComponent.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerBackHintComponent.kt @@ -13,8 +13,8 @@ import dev.slne.surf.surfapi.core.api.messages.builder.SurfComponentBuilder * texture width 15 pixels) to hint to the player that clicking outside the inventory navigates back. */ data object ViewContainerBackHintComponent : ViewContainerComponent { - override val positionalShift = -21 - override val textureWidth = 15 + override val positionalShift = -22 + override val textureWidth = 15 + 2 // 2 pixel for spacing override fun SurfComponentBuilder.renderComponent() { text("ꐷ") From efb874a03f2d1eb7394b7f122a664af013393414 Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 23:38:30 +0100 Subject: [PATCH 5/9] feat: adjust text alignment calculations for improved title rendering --- .../component/components/ViewContainerTitleComponent.kt | 3 +-- .../inventory/framework/view/settings/align/TextAlignment.kt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt index 26a0a584..8565e902 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent.kt @@ -61,8 +61,7 @@ class ViewContainerTitleComponent( ) override val positionalShift = textAlignment.calculateShift(title, alignmentOptions) - override val textureWidth = - TextAlignment.calculateTextWidth(title, alignmentOptions) - 1 // -1 because of the last char spacing + override val textureWidth = TextAlignment.calculateTextWidth(title, alignmentOptions) override fun SurfComponentBuilder.renderComponent() { text(formattedTitle) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/align/TextAlignment.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/align/TextAlignment.kt index 4857e58e..5c7092d9 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/align/TextAlignment.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/align/TextAlignment.kt @@ -48,7 +48,7 @@ enum class TextAlignment { ): Int { val usableWidth = options.containerWidth - (options.padding * 2) val freeSpace = usableWidth - calculateTextWidth(text, options) - return options.leftShift + (freeSpace / 2) + options.padding + return options.leftShift + (freeSpace / 2) + 1 + options.padding } }; From a429e907968d856f7f2816bf345c75756d66e4bb Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 23:40:45 +0100 Subject: [PATCH 6/9] feat: update positionalShift in PaginationButtonGlyphComponent for improved layout --- .../view/pagination/PaginationButtonGlyphComponent.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/PaginationButtonGlyphComponent.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/PaginationButtonGlyphComponent.kt index d90426af..ea6c2db5 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/PaginationButtonGlyphComponent.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/PaginationButtonGlyphComponent.kt @@ -24,8 +24,9 @@ import me.devnatan.inventoryframework.component.Pagination * * @param row the 1-based inventory row where the pagination buttons are located */ -internal sealed class PaginationButtonGlyphComponent(private val row: Int) : ViewContainerComponent { - override val positionalShift = 38 +internal sealed class PaginationButtonGlyphComponent(private val row: Int) : + ViewContainerComponent { + override val positionalShift = 39 override val textureWidth = 88 /** From 5246fcb0a7ea8e6a894f9e06f7e1f9b2e91fd514 Mon Sep 17 00:00:00 2001 From: Ammo Date: Sat, 14 Mar 2026 23:55:35 +0100 Subject: [PATCH 7/9] feat: update ViewIconType and modify container methods for improved functionality --- .../api/surf-api-bukkit-api.api | 99 ++++++++++++++----- .../framework/view/icon/ViewIconType.kt | 2 +- 2 files changed, 77 insertions(+), 24 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api b/surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api index 0dc73bf2..ac48d12b 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api +++ b/surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api @@ -865,7 +865,6 @@ public abstract class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/ protected fun containerDefaults (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;)V public fun getSettings ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/SurfViewSettings; protected final fun modifyContainer (Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun modifyContainer$default (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V public synthetic fun onClick (Lme/devnatan/inventoryframework/context/IFSlotClickContext;)V public final fun onClick (Lme/devnatan/inventoryframework/context/SlotClickContext;)V public final fun onClose (Lme/devnatan/inventoryframework/context/CloseContext;)V @@ -934,8 +933,6 @@ public abstract class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/ protected fun getLayoutTarget ()C public fun getSettings ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/PaginatedViewSettings; public synthetic fun getSettings ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/SurfViewSettings; - public final fun modifyContainer (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewRef;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun modifyContainer$default (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewDSLImpl;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewRef;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V protected fun onPaginatedClick (Lme/devnatan/inventoryframework/context/SlotClickContext;)V protected fun onPaginatedClose (Lme/devnatan/inventoryframework/context/CloseContext;)V protected fun onPaginatedInit (Lme/devnatan/inventoryframework/ViewConfigBuilder;)V @@ -949,8 +946,8 @@ public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/Pag } public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilderKt { - public static final fun paginatedSurfView (Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/AbstractPaginatedSurfView; - public static final fun surfView (Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView; + public static final fun paginatedSurfView (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/AbstractPaginatedSurfView; + public static final fun surfView (Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView; } public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewContext : dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewContext { @@ -963,8 +960,6 @@ public abstract class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/ public fun (Ljava/lang/String;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewContext;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewRef;)V protected fun containerDefaults (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;)V public fun getSettings ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/SurfViewSettings; - public final fun modifyContainer (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewRef;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;)V - public static synthetic fun modifyContainer$default (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewDSLImpl;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewRef;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)V protected fun onViewClick (Lme/devnatan/inventoryframework/context/SlotClickContext;)V protected fun onViewClose (Lme/devnatan/inventoryframework/context/CloseContext;)V protected fun onViewInit (Lme/devnatan/inventoryframework/ViewConfigBuilder;)V @@ -976,6 +971,7 @@ public abstract class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/ public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewLifecycleDslKt { public static final fun containerDefaults (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewContext;Lkotlin/jvm/functions/Function2;)V public static final fun layoutTarget (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/PaginatedSurfViewContext;C)V + public static final fun modifyContainer (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewRef;Lme/devnatan/inventoryframework/context/Context;Lkotlin/jvm/functions/Function1;)V public static final fun onClick (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewContext;Lkotlin/jvm/functions/Function2;)V public static final fun onClose (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewContext;Lkotlin/jvm/functions/Function2;)V public static final fun onFirstRender (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewContext;Lkotlin/jvm/functions/Function2;)V @@ -1034,6 +1030,24 @@ public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/con public fun toString ()Ljava/lang/String; } +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent : dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/ViewContainerComponent { + public static final field CHAR_SIZE I + public static final field CHAR_SPACING I + public static final field CONTAINER_WIDTH I + public static final field Companion Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent$Companion; + public static final field LEFT_SHIFT I + public static final field PADDING I + public fun (Ljava/lang/String;Lnet/kyori/adventure/key/Key;ILdev/slne/surf/surfapi/bukkit/api/inventory/framework/view/settings/align/TextAlignment;)V + public fun equals (Ljava/lang/Object;)Z + public fun getPositionalShift ()I + public fun getTextureWidth ()I + public fun hashCode ()I + public fun renderComponent (Ldev/slne/surf/surfapi/core/api/messages/builder/SurfComponentBuilder;)V +} + +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/components/ViewContainerTitleComponent$Companion { +} + public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerDSLKt { public static final fun addChild (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/ViewContainerComponent;)V public static final fun backHint (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;)V @@ -1045,6 +1059,7 @@ public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/con public static final fun blockRow (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;I[I)V public static synthetic fun blockRow$default (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;ILit/unimi/dsi/fastutil/ints/IntCollection;ILjava/lang/Object;)V public static final fun hasComponentOfType (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;Ljava/lang/Class;)Z + public static final fun header (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfViewRef;Ljava/lang/String;)V public static final fun removeChild (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/component/ViewContainerComponent;)V public static final fun removeChildrenOfType (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/container/dsl/ViewContainerModificationContext;Ljava/lang/Class;)V } @@ -1056,6 +1071,60 @@ public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/con public fun toString ()Ljava/lang/String; } +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIcon { + public fun (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor;)V + public final fun build (Lkotlin/jvm/functions/Function1;)Lorg/bukkit/inventory/ItemStack; + public final fun getColor ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public final fun getIcon ()Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public final fun getItemModel ()Ljava/lang/String; +} + +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor : java/lang/Enum { + public static final field BLUE Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public static final field GREEN Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public static final field RED Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public static final field WHITE Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public static final field YELLOW Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public final fun getConfigName ()Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; + public static fun values ()[Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor; +} + +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconKt { + public static final fun viewIcon (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor;Lkotlin/jvm/functions/Function1;)Lorg/bukkit/inventory/ItemStack; + public static synthetic fun viewIcon$default (Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType;Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconColor;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/bukkit/inventory/ItemStack; +} + +public final class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType : java/lang/Enum { + public static final field ARROW_DOWN Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field ARROW_LEFT Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field ARROW_NEXT Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field ARROW_PREVIOUS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field ARROW_RIGHT Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field ARROW_UP Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field BELL Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field CHECK Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field CIRCLE Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field COG Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field CROSS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field EQUALS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field EXCLAMATION_MARK Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field HOME Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field MENU Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field MINUS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field PLUS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field QUESTION Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field QUESTION_MARK Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field RELOAD Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field SEARCH Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static final field USERS Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public final fun getConfigName ()Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public static fun valueOf (Ljava/lang/String;)Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; + public static fun values ()[Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType; +} + public abstract class dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/AbstractPaginatedSurfView : dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView { public static final field Companion Ldev/slne/surf/surfapi/bukkit/api/inventory/framework/view/pagination/AbstractPaginatedSurfView$Companion; public fun (Ljava/lang/String;)V @@ -2177,22 +2246,6 @@ public abstract class dev/slne/surf/surfapi/bukkit/api/permission/PermissionRegi public final fun create (Ljava/lang/String;)Ljava/lang/String; } -public final class dev/slne/surf/surfapi/bukkit/api/rarity/Rarity : java/lang/Enum, net/kyori/adventure/text/ComponentLike { - public static final field COMMON Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static final field EPIC Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static final field LEGENDARY Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static final field MYTHIC Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static final field RARE Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static final field UNCOMMON Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public synthetic fun asComponent ()Lnet/kyori/adventure/text/Component; - public fun asComponent ()Lnet/kyori/adventure/text/TextComponent; - public final fun getColor ()Lnet/kyori/adventure/text/format/TextColor; - public final fun getDisplayName ()Lnet/kyori/adventure/text/TextComponent; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public static fun valueOf (Ljava/lang/String;)Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; - public static fun values ()[Ldev/slne/surf/surfapi/bukkit/api/rarity/Rarity; -} - public abstract interface annotation class dev/slne/surf/surfapi/bukkit/api/scoreboard/ObsoleteScoreboardApi : java/lang/annotation/Annotation { } diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt index cca0fa42..ed1e3ba9 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/icon/ViewIconType.kt @@ -11,7 +11,7 @@ enum class ViewIconType( CHECK("check"), USERS("users"), HOME("home"), - COG("cover"), + COG("cog"), BELL("bell"), PLUS("plus"), MINUS("minus"), From f49186f5b548afab9617be57c101bb9b249ae63e Mon Sep 17 00:00:00 2001 From: Simon <32338899+ammodev@users.noreply.github.com> Date: Sat, 14 Mar 2026 23:56:43 +0100 Subject: [PATCH 8/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../inventory/framework/view/SurfViewBuilder.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt index a0312d7d..6c6b6b59 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/SurfViewBuilder.kt @@ -5,10 +5,9 @@ import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.pagination.Abst /** * Creates a simple (non-paginated) [AbstractSurfView] using a DSL builder. * - * The [block] is called with both a [SurfViewContext] (for lifecycle hooks and settings) - * and a [SurfViewRef] (for accessing the view inside callbacks) as context receivers. - * After the block executes, the concrete view implementation is instantiated and the - * reference is resolved. + * The [block] is called with a [SurfViewContext] as its context receiver, which exposes + * lifecycle hooks and view settings for configuration. After the block executes, the + * concrete view implementation is instantiated and its internal reference is resolved. * * ```kotlin * val myView = surfView("Inventory Title") { @@ -25,7 +24,7 @@ import dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.pagination.Abst * ``` * * @param header the plain-text title rendered in the inventory header - * @param block DSL configuration block accepting both [SurfViewContext] and [SurfViewRef] + * @param block DSL configuration block with [SurfViewContext] as its context receiver * @return the fully configured [AbstractSurfView] * @see paginatedSurfView * @see AbstractSurfView @@ -47,9 +46,9 @@ inline fun surfView(header: String, block: context (SurfViewContext) () -> Unit) /** * Creates a paginated [AbstractPaginatedSurfView] using a DSL builder. * - * Works the same as [surfView] but accepts a [PaginatedSurfViewContext] and - * [PaginatedSurfViewRef]. The [block] must configure at least a `layoutTarget` character - * and a `pagination { }` block, otherwise [IllegalStateException] is thrown at view creation. + * Works similarly to [surfView] but uses a [PaginatedSurfViewContext] as the context + * receiver. The [block] must configure at least a `layoutTarget` character and a + * `pagination { }` block, otherwise [IllegalStateException] is thrown at view creation. * * ```kotlin * val listView = paginatedSurfView("Item List") { @@ -68,7 +67,7 @@ inline fun surfView(header: String, block: context (SurfViewContext) () -> Unit) * ``` * * @param header the plain-text title rendered in the inventory header - * @param block DSL configuration block accepting both [PaginatedSurfViewContext] and [PaginatedSurfViewRef] + * @param block DSL configuration block with [PaginatedSurfViewContext] as its context receiver * @return the fully configured [AbstractPaginatedSurfView] * @see surfView * @see dev.slne.surf.surfapi.bukkit.api.inventory.framework.view.pagination.AbstractPaginatedSurfView From 0678bccdfa08df15be2b0f145bb369efbb6a5042 Mon Sep 17 00:00:00 2001 From: Simon <32338899+ammodev@users.noreply.github.com> Date: Sat, 14 Mar 2026 23:56:56 +0100 Subject: [PATCH 9/9] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../api/inventory/framework/view/AbstractSurfView.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt index 10ab0926..a652b2bd 100644 --- a/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt +++ b/surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/inventory/framework/view/AbstractSurfView.kt @@ -109,15 +109,14 @@ abstract class AbstractSurfView( protected open fun onViewUpdate(update: Context) = Unit /** - * Applies modifications to the [ViewContainer] and optionally updates the inventory title. + * Applies modifications to the [ViewContainer] and updates the inventory title. * * The [block] is executed within a [ViewContainerModificationContext] that provides - * component management functions. If [context] is provided: + * component management functions. Title updates are propagated based on [context]: * - For an [OpenContext], the title is set via `modifyConfig`. * - For any other context, `updateTitleForEveryone` is called to update all viewers. * - * @param context optional context used to propagate the title change; `null` skips - * the title update (useful during initial setup) + * @param context context used to propagate the title change to viewers * @param block modifications to apply to the [ViewContainer] */ protected fun modifyContainer(