Skip to content

Commit fe0f948

Browse files
Add hiddenComponents to ItemProviderDSL
1 parent 302c10c commit fe0f948

1 file changed

Lines changed: 15 additions & 3 deletions

File tree

invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/dsl/ItemProviderDsl.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,15 @@ sealed interface ItemProviderDsl {
228228
*/
229229
val hasTooltip: ProviderDslProperty<Boolean?>
230230

231+
/**
232+
* A set of [DataComponentTypes][DataComponentType] that are hidden in the tooltip.
233+
*
234+
* ```
235+
* hiddenComponents by setOf(DataComponentTypes.ENCHANTMENTS)
236+
* ```
237+
*/
238+
val hiddenComponents: ProviderDslProperty<Set<DataComponentType>?>
239+
231240
/**
232241
* Access to arbitrary data components beyond the convenience properties.
233242
*
@@ -305,6 +314,7 @@ internal class ItemProviderDslImpl(
305314
private var _customName = provider<Component?>(null)
306315
private var _lore = provider<List<Component>?>(null)
307316
private var _hasTooltip = provider<Boolean?>(null)
317+
private var _hiddenComponents = provider<Set<DataComponentType>?>(null)
308318

309319
override val data = DataComponentsPatchImpl()
310320

@@ -322,14 +332,16 @@ internal class ItemProviderDslImpl(
322332
get() = ProviderDslProperty(::_lore)
323333
override val hasTooltip: ProviderDslProperty<Boolean?>
324334
get() = ProviderDslProperty(::_hasTooltip)
335+
override val hiddenComponents: ProviderDslProperty<Set<DataComponentType>?>
336+
get() = ProviderDslProperty(::_hiddenComponents)
325337
override val hasGlint: ProviderDslProperty<Boolean?>
326338
get() = data[DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE]
327339

328340
fun build(): Provider<ItemProvider> {
329341
val dataTypeProviders = data.components.map { (type, dslProperty) -> dslProperty.map { type to it } }
330342
return combinedProvider(
331-
_base, _type, _amount, _name, _customName, _lore, _hasTooltip, combinedProvider(dataTypeProviders)
332-
) { base, type, amount, name, customName, lore, hasTooltip, dataTypes ->
343+
_base, _type, _amount, _name, _customName, _lore, _hasTooltip, _hiddenComponents, combinedProvider(dataTypeProviders)
344+
) { base, type, amount, name, customName, lore, hasTooltip, hiddenComponents, dataTypes ->
333345
var result = base.clone()
334346
var hasTooltip = hasTooltip
335347

@@ -361,7 +373,7 @@ internal class ItemProviderDslImpl(
361373
hideTooltip(!hasTooltip)
362374
// individual hidden components are only needed if tooltip is shown
363375
if (hasTooltip) {
364-
hiddenComponents(prev?.hiddenComponents() ?: emptySet())
376+
hiddenComponents(hiddenComponents ?: prev?.hiddenComponents() ?: emptySet())
365377
}
366378
}
367379
result.setData(DataComponentTypes.TOOLTIP_DISPLAY, new)

0 commit comments

Comments
 (0)