Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package io.github.pylonmc.rebar.datatypes

import io.github.pylonmc.rebar.config.RebarConfig
import io.github.pylonmc.rebar.util.rebarKey
import io.github.pylonmc.rebar.waila.PlayerWailaConfig
import net.kyori.adventure.bossbar.BossBar
import org.bukkit.persistence.PersistentDataAdapterContext
import org.bukkit.persistence.PersistentDataContainer
import org.bukkit.persistence.PersistentDataType
Expand All @@ -10,6 +12,8 @@ object PlayerWailaConfigPersistentDataType : PersistentDataType<PersistentDataCo
val enabledKey = rebarKey("waila_enabled")
val vanillaWailaEnabledKey = rebarKey("waila_vanilla_enabled")
val typeKey = rebarKey("waila_type")
val colorKey = rebarKey("waila_color")
val overlayKey = rebarKey("waila_overlay")

override fun getPrimitiveType(): Class<PersistentDataContainer> = PersistentDataContainer::class.java

Expand All @@ -22,7 +26,9 @@ object PlayerWailaConfigPersistentDataType : PersistentDataType<PersistentDataCo
val enabled = primitive.get(enabledKey, RebarSerializers.BOOLEAN)!!
val vanillaWailaEnabled = primitive.get(vanillaWailaEnabledKey, RebarSerializers.BOOLEAN)!!
val type = primitive.get(typeKey, RebarSerializers.WAILA_TYPE)!!
return PlayerWailaConfig(enabled, vanillaWailaEnabled, type)
val color = primitive.getOrDefault(colorKey, RebarSerializers.ENUM.enumTypeFrom(BossBar.Color::class.java), RebarConfig.WailaConfig.DEFAULT_DISPLAY.color)
val overlay = primitive.getOrDefault(overlayKey, RebarSerializers.ENUM.enumTypeFrom(BossBar.Overlay::class.java), RebarConfig.WailaConfig.DEFAULT_DISPLAY.overlay)
return PlayerWailaConfig(enabled, vanillaWailaEnabled, type, color, overlay)
}

override fun toPrimitive(
Expand All @@ -33,6 +39,8 @@ object PlayerWailaConfigPersistentDataType : PersistentDataType<PersistentDataCo
pdc.set(enabledKey, RebarSerializers.BOOLEAN, complex.enabled)
pdc.set(vanillaWailaEnabledKey, RebarSerializers.BOOLEAN, complex.vanillaWailaEnabled)
pdc.set(typeKey, RebarSerializers.WAILA_TYPE, complex.type)
pdc.set(colorKey, RebarSerializers.ENUM.enumTypeFrom(BossBar.Color::class.java), complex.bossbarColor)
pdc.set(overlayKey, RebarSerializers.ENUM.enumTypeFrom(BossBar.Overlay::class.java), complex.bossbarOverlay)
return pdc
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ import io.github.pylonmc.rebar.guide.button.setting.TogglePlayerSettingButton
import io.github.pylonmc.rebar.item.builder.ItemStackBuilder
import io.github.pylonmc.rebar.util.rebarKey
import io.github.pylonmc.rebar.waila.Waila.Companion.wailaConfig
import io.papermc.paper.registry.RegistryAccess
import io.papermc.paper.registry.RegistryKey
import net.kyori.adventure.bossbar.BossBar
import org.bukkit.Material
import org.bukkit.NamespacedKey

object WailaSettingsPage : PlayerSettingsPage(rebarKey("waila_settings")) {
init {
Expand Down Expand Up @@ -39,5 +43,38 @@ object WailaSettingsPage : PlayerSettingsPage(rebarKey("waila_settings")) {
}
))
}
if (RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_COLORS.size > 1) {
addSetting(
CyclePlayerSettingButton(
rebarKey("cycle-waila-boss-bar-color"),
RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_COLORS.toList(),
identifier = { color -> color.name.lowercase() },
getter = { player -> player.wailaConfig.bossbarColor },
setter = { player, color -> player.wailaConfig.bossbarColor = color },
decorator = { player, color ->
ItemStackBuilder.Companion.of(RegistryAccess.registryAccess().getRegistry(RegistryKey.ITEM).get(
NamespacedKey.minecraft(color.name.lowercase() + "_wool"))!!)
.addCustomModelDataString("waila_boss_bar_color=${color.name.lowercase()}")
.build()
}
)
)
}
if (RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_OVERLAYS.size > 1) {
addSetting(
CyclePlayerSettingButton(
rebarKey("cycle-waila-boss-bar-overlay"),
RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_OVERLAYS.toList(),
identifier = { overlay -> overlay.name.lowercase() },
getter = { player -> player.wailaConfig.bossbarOverlay },
setter = { player, overlay -> player.wailaConfig.bossbarOverlay = overlay },
decorator = { player, overlay ->
ItemStackBuilder.Companion.of(Material.NOTE_BLOCK)
.addCustomModelDataString("waila_boss_bar_overlay=${overlay.name.lowercase()}")
.build()
}
)
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import org.bukkit.attribute.AttributeModifier
import org.bukkit.block.BlockType
import org.bukkit.inventory.EquipmentSlotGroup
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.ItemType
import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.persistence.PersistentDataContainer
import org.jetbrains.annotations.ApiStatus
Expand Down Expand Up @@ -388,6 +389,11 @@ open class ItemStackBuilder internal constructor(val stack: ItemStack) : ItemPro
return of(ItemStack(material))
}

@JvmStatic
fun of(itemType: ItemType): ItemStackBuilder {
return of(itemType.createItemStack())
}

/**
* Creates a new [ItemStack] for a GUI item, sets its pdc key and adds
* a custom model data string for resource packs.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package io.github.pylonmc.rebar.waila

import io.github.pylonmc.rebar.config.RebarConfig
import io.github.pylonmc.rebar.waila.Waila.Companion.wailaConfig
import net.kyori.adventure.bossbar.BossBar
import org.bukkit.entity.Player

class PlayerWailaConfig {
Expand All @@ -25,11 +26,25 @@ class PlayerWailaConfig {
player?.wailaConfig = this
}

var bossbarColor: BossBar.Color = RebarConfig.WailaConfig.DEFAULT_DISPLAY.color
set(value) {
field = value
player?.wailaConfig = this
}

var bossbarOverlay: BossBar.Overlay = RebarConfig.WailaConfig.DEFAULT_DISPLAY.overlay
set(value) {
field = value
player?.wailaConfig = this
}

constructor()

constructor(enabled: Boolean, vanillaWailaEnabled: Boolean, type: Waila.Type) {
constructor(enabled: Boolean, vanillaWailaEnabled: Boolean, type: Waila.Type, bossbarColor: BossBar.Color, bossbarOverlay: BossBar.Overlay) {
this.enabled = enabled
this.vanillaWailaEnabled = vanillaWailaEnabled
this.type = type
this.bossbarColor = bossbarColor
this.bossbarOverlay = bossbarOverlay
}
}
12 changes: 6 additions & 6 deletions rebar/src/main/kotlin/io/github/pylonmc/rebar/waila/Waila.kt
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,21 @@ class Waila private constructor(private val player: Player, playerConfig: Player
private val bossBar = BossBar.bossBar(
Component.empty(),
RebarConfig.WailaConfig.DEFAULT_DISPLAY.progress,
RebarConfig.WailaConfig.DEFAULT_DISPLAY.color,
RebarConfig.WailaConfig.DEFAULT_DISPLAY.overlay
playerConfig.bossbarColor,
playerConfig.bossbarOverlay
)

private fun send(display: WailaDisplay) {
when (config.type) {
Type.BOSSBAR -> {
player.hideBossBar(bossBar)
val color = if (display.color in RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_COLORS) {
display.color
val color = if (config.bossbarColor in RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_COLORS) {
config.bossbarColor
} else {
RebarConfig.WailaConfig.DEFAULT_DISPLAY.color
}
val overlay = if (display.overlay in RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_OVERLAYS) {
display.overlay
val overlay = if (config.bossbarOverlay in RebarConfig.WailaConfig.ALLOWED_BOSS_BAR_OVERLAYS) {
config.bossbarOverlay
} else {
RebarConfig.WailaConfig.DEFAULT_DISPLAY.overlay
}
Expand Down
50 changes: 50 additions & 0 deletions rebar/src/main/resources/lang/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,56 @@ guide:
<guidearrow> Whether your WAILA is displayed as an actionbar or bossbar
<guidearrow> <green>Bossbar <dark_gray>- <gray>at the top of your screen
<guidearrow> <aqua>Actionbar <dark_gray>- <gray>at the bottom of your screen
cycle-waila-boss-bar-color:
pink:
name: "<white>Boss bar color: <red>Pink <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
blue:
name: "<white>Boss bar color: <blue>Blue <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
red:
name: "<white>Boss bar color: <red>Red <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
green:
name: "<white>Boss bar color: <green>Green <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
yellow:
name: "<white>Boss bar color: <yellow>Yellow <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
purple:
name: "<white>Boss bar color: <light_purple>Purple <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
white:
name: "<white>Boss bar color: <white>White <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The color of your boss bar WAILA
cycle-waila-boss-bar-overlay:
progress:
name: "<white>Boss bar overlay: <green>Progress <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The overlay of your boss bar WAILA
notched_6:
name: "<white>Boss bar overlay: <green>Notched 6 <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The overlay of your boss bar WAILA
notched_10:
name: "<white>Boss bar overlay: <green>Notched 10 <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The overlay of your boss bar WAILA
notched_12:
name: "<white>Boss bar overlay: <green>Notched 12 <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The overlay of your boss bar WAILA
notched_20:
name: "<white>Boss bar overlay: <green>Notched 20 <dark_gray>(Click to cycle)"
lore: |-
<guidearrow> The overlay of your boss bar WAILA
toggle-block-culling:
enabled:
name: "<white>Block culling: <green>Enabled <dark_gray>(Click to toggle)"
Expand Down
Loading