Skip to content

Commit 1b6112c

Browse files
authored
Merge pull request #19 from SLNE-Development/fix/fix-colors
Fix/fix colors
2 parents 3f8ce67 + c9bedda commit 1b6112c

File tree

11 files changed

+100
-59
lines changed

11 files changed

+100
-59
lines changed

.idea/gradle.xml

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ org.gradle.daemon=true
33
kapt.use.k2=true
44
kapt.include.compile.classpath=false
55
kotlin.stdlib.default.dependency=false
6-
version=1.21.11-1.4.0
6+
version=1.21.11-1.4.1

surf-clan-api/src/main/kotlin/dev/slne/clan/api/clan/Clan.kt

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import dev.slne.clan.api.invite.ClanInviteResult
66
import dev.slne.clan.api.member.ClanMember
77
import dev.slne.clan.api.member.ClanMemberAddResult
88
import dev.slne.clan.api.member.ClanMemberRole
9-
import dev.slne.surf.surfapi.core.api.messages.Colors
109
import net.kyori.adventure.text.format.ShadowColor
1110
import net.kyori.adventure.text.format.TextColor
1211
import org.jetbrains.annotations.ApiStatus
@@ -127,11 +126,12 @@ interface Clan : ClanView {
127126
/**
128127
* The default color for clan tags when no custom color is set.
129128
*/
130-
val DEFAULT_CLAN_TAG_BACKGROUND_COLOR: TextColor = Colors.WHITE
131-
132-
val DEFAULT_CLAN_TAG_FOREGROUND_COLOR: TextColor = Colors.WHITE
133-
134-
val DEFAULT_CLAN_TAG_SHADOW_COLOR: ShadowColor = ShadowColor.none()
129+
val DEFAULT_CLAN_TAG_BACKGROUND_COLOR: TextColor = TextColor.fromHexString("#39434f")
130+
?: error("Failed to parse default clan tag background color")
131+
val DEFAULT_CLAN_TAG_FOREGROUND_COLOR: TextColor = TextColor.fromHexString("#f0f4f7")
132+
?: error("Failed to parse default clan tag foreground color")
133+
val DEFAULT_CLAN_TAG_SHADOW_COLOR: ShadowColor = ShadowColor.fromHexString("#899098FF")
134+
?: error("Failed to parse default clan tag shadow color")
135135

136136
val DEFAULT_CLAN_TAG_COLORS = ClanTagColor(
137137
DEFAULT_CLAN_TAG_FOREGROUND_COLOR,
@@ -170,15 +170,17 @@ interface Clan : ClanView {
170170
* @param listener the listener to register
171171
* @see ClanListener
172172
*/
173-
fun registerListener(listener: ClanListener) = ClanService.instance.registerListener(listener)
173+
fun registerListener(listener: ClanListener) =
174+
ClanService.instance.registerListener(listener)
174175

175176
/**
176177
* Unregisters a previously registered clan listener.
177178
*
178179
* @param listener the listener to unregister
179180
* @see ClanListener
180181
*/
181-
fun unregisterListener(listener: ClanListener) = ClanService.instance.unregisterListener(listener)
182+
fun unregisterListener(listener: ClanListener) =
183+
ClanService.instance.unregisterListener(listener)
182184

183185
/**
184186
* Retrieves the clan that a player is a member of.
@@ -257,6 +259,7 @@ interface Clan : ClanView {
257259
}
258260
}
259261

260-
suspend inline fun Clan.changeClanTagColor(update: ClanTagColor.Update.Builder.() -> Unit) = changeClanTagColor(
261-
ClanTagColor.update(update)
262-
)
262+
suspend inline fun Clan.changeClanTagColor(update: ClanTagColor.Update.Builder.() -> Unit) =
263+
changeClanTagColor(
264+
ClanTagColor.update(update)
265+
)

surf-clan-api/src/main/kotlin/dev/slne/clan/api/clan/ClanTagColor.kt

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,20 @@ data class ClanTagColor(
6969
shadowColor = shadow ?: Clan.DEFAULT_CLAN_TAG_SHADOW_COLOR
7070
)
7171
}
72+
73+
fun clanTagColorOrNull(
74+
foreground: TextColor?,
75+
background: TextColor?,
76+
shadow: ShadowColor?
77+
): ClanTagColor? {
78+
if (foreground == null || background == null || shadow == null) return null
79+
80+
return ClanTagColor(
81+
foregroundColor = foreground,
82+
backgroundColor = background,
83+
shadowColor = shadow
84+
)
85+
}
7286
}
7387

7488
internal sealed interface Field<out T> {
@@ -77,7 +91,7 @@ data class ClanTagColor(
7791
data class Set<T>(val value: T) : Field<T>
7892
}
7993

80-
fun applyUpdate(update: Update, defaults: ClanTagColor): ClanTagColor {
94+
fun applyUpdate(update: Update): ClanTagColor {
8195
fun <T> Field<T>.resolve(current: T, default: T): T =
8296
when (this) {
8397
Field.Unset -> current
@@ -86,9 +100,21 @@ data class ClanTagColor(
86100
}
87101

88102
return copy(
89-
foregroundColor = update.foreground.resolve(foregroundColor, defaults.foregroundColor),
90-
backgroundColor = update.background.resolve(backgroundColor, defaults.backgroundColor),
91-
shadowColor = update.shadow.resolve(shadowColor, defaults.shadowColor),
103+
foregroundColor = update.foreground.resolve(foregroundColor, foregroundColor),
104+
backgroundColor = update.background.resolve(backgroundColor, backgroundColor),
105+
shadowColor = update.shadow.resolve(shadowColor, shadowColor),
92106
)
93107
}
108+
}
109+
110+
fun ClanTagColor?.update(update: ClanTagColor.Update): ClanTagColor {
111+
return this?.applyUpdate(update) ?: ClanTagColor().applyUpdate(update)
112+
}
113+
114+
fun ClanTagColor?.update(block: ClanTagColor.Update.Builder.() -> Unit): ClanTagColor {
115+
val builder = ClanTagColor.Update.Builder()
116+
block(builder)
117+
return builder.build().let { update ->
118+
this?.applyUpdate(update) ?: ClanTagColor().applyUpdate(update)
119+
}
94120
}

surf-clan-api/src/main/kotlin/dev/slne/clan/api/clan/ClanView.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import dev.slne.clan.api.invite.ClanInviteView
44
import dev.slne.clan.api.member.ClanMemberView
55
import dev.slne.clan.api.permission.ClanPermission
66
import net.kyori.adventure.text.Component
7-
import net.kyori.adventure.text.format.ShadowColor
8-
import net.kyori.adventure.text.format.TextColor
97
import org.jetbrains.annotations.ApiStatus
108
import java.time.OffsetDateTime
119
import java.util.*
@@ -54,7 +52,7 @@ interface ClanView {
5452
*/
5553
val discordInvite: String?
5654

57-
val clanTagColor: ClanTagColor
55+
val clanTagColor: ClanTagColor?
5856

5957
/**
6058
* An immutable set of all members in this clan.
@@ -129,4 +127,5 @@ interface ClanView {
129127
fun renderClanTag(minSize: Int = 0): Component
130128

131129
fun broadcast(message: Component)
130+
fun getClanTagColorOrDefault() = clanTagColor ?: Clan.DEFAULT_CLAN_TAG_COLORS
132131
}

surf-clan-core/src/main/kotlin/dev/slne/clan/core/clan/AbstractClanView.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@ abstract class AbstractClanView : ClanView {
2222
return getMember(uuid)?.hasPermission(permission) ?: false
2323
}
2424

25-
override fun getRichClanTag(): Component {
26-
return BitmapProvider.translateToComponent(
27-
tag,
28-
clanTagColor.foregroundColor,
29-
clanTagColor.backgroundColor,
30-
clanTagColor.shadowColor
31-
)
32-
}
25+
override fun getRichClanTag(): Component = BitmapProvider.translateToComponent(
26+
tag,
27+
getClanTagColorOrDefault().foregroundColor,
28+
getClanTagColorOrDefault().backgroundColor,
29+
getClanTagColorOrDefault().shadowColor
30+
)
3331

3432
override fun renderClanTag(minSize: Int): Component {
3533
if (tag.isBlank()) return Component.empty()

surf-clan-core/src/main/kotlin/dev/slne/clan/core/clan/ClanImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ data class ClanImpl(
2121
override val name: String,
2222
override val tag: String,
2323
override val createdByUuid: SerializableStringUUID,
24-
override var clanTagColor: ClanTagColor,
24+
override var clanTagColor: ClanTagColor?,
2525
override var description: String?,
2626
override var discordInvite: String?,
2727
override var members: Set<ClanMemberImpl>,

surf-clan-core/src/main/kotlin/dev/slne/clan/core/clan/ClanViewImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ data class ClanViewImpl(
1515
override val createdByUuid: UUID,
1616
override val description: String?,
1717
override val discordInvite: String?,
18-
override val clanTagColor: ClanTagColor,
18+
override val clanTagColor: ClanTagColor?,
1919
override val members: Set<ClanMemberView>,
2020
override val updatedAt: OffsetDateTime,
2121
override val createdAt: OffsetDateTime,

surf-clan-paper/src/main/kotlin/dev/slne/clan/paper/commands/subcommands/options/ClanTagOptionTagColorCommand.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@ fun CommandAPICommand.clanTagColorCommand() = subcommand("tagcolor") {
4949
}
5050

5151
private suspend fun changeColor(sender: Player, update: ClanTagColor.Update) {
52-
val clan = Clan.byPlayer(sender.uniqueId) ?: throw CommandAPI.failWithString("Du bist in keinem Clan.")
52+
val clan =
53+
Clan.byPlayer(sender.uniqueId) ?: throw CommandAPI.failWithString("Du bist in keinem Clan.")
5354

5455
if (!clan.hasMemberPermission(sender.uniqueId, ClanPermission.OPTIONS_TAG_COLOR)) {
5556
throw CommandAPI.failWithString("Du hast keine Berechtigung, die Farbe des Clan-Tags zu ändern.")
5657
}
5758

5859
clan.changeClanTagColor(update)
60+
5961
sender.sendText {
6062
appendSuccessPrefix()
6163
success("Die Farbe des Clan-Tags wurde erfolgreich geändert.")

surf-clan-runtime/src/main/kotlin/dev/slne/surf/clan/runtime/db/repository/impl/ClanRepositoryImpl.kt

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -65,31 +65,34 @@ class ClanRepositoryImpl : ClanRepository {
6565
.let(::createClanDAOOrNull)
6666
}
6767

68-
override suspend fun fetchAllClansWithoutMembersSortByMemberCount(): Collection<ClanImpl> = suspendTransaction {
69-
val memberCount = ClanMembersTable.id.count()
70-
71-
ClansTable
72-
.leftJoin(ClanMembersTable, { ClansTable.id }, { ClanMembersTable.clanId })
73-
.select(ClansTable.columns + memberCount)
74-
.groupBy(ClansTable.id)
75-
.orderBy(memberCount, SortOrder.DESC)
76-
.map { row ->
77-
createClanDAO(row, emptySet())
78-
}
79-
.toList()
80-
}
68+
override suspend fun fetchAllClansWithoutMembersSortByMemberCount(): Collection<ClanImpl> =
69+
suspendTransaction {
70+
val memberCount = ClanMembersTable.id.count()
8171

82-
override suspend fun updateDescription(clanID: ULong, description: String?): Boolean = suspendTransaction {
83-
ClansTable.update({ ClansTable.id eq clanID }) {
84-
it[ClansTable.description] = description
85-
} > 0
86-
}
72+
ClansTable
73+
.leftJoin(ClanMembersTable, { ClansTable.id }, { ClanMembersTable.clanId })
74+
.select(ClansTable.columns + memberCount)
75+
.groupBy(ClansTable.id)
76+
.orderBy(memberCount, SortOrder.DESC)
77+
.map { row ->
78+
createClanDAO(row, emptySet())
79+
}
80+
.toList()
81+
}
8782

88-
override suspend fun updateDiscordInvite(clanID: ULong, discordInvite: String?): Boolean = suspendTransaction {
89-
ClansTable.update({ ClansTable.id eq clanID }) {
90-
it[ClansTable.discordInvite] = discordInvite
91-
} > 0
92-
}
83+
override suspend fun updateDescription(clanID: ULong, description: String?): Boolean =
84+
suspendTransaction {
85+
ClansTable.update({ ClansTable.id eq clanID }) {
86+
it[ClansTable.description] = description
87+
} > 0
88+
}
89+
90+
override suspend fun updateDiscordInvite(clanID: ULong, discordInvite: String?): Boolean =
91+
suspendTransaction {
92+
ClansTable.update({ ClansTable.id eq clanID }) {
93+
it[ClansTable.discordInvite] = discordInvite
94+
} > 0
95+
}
9396

9497
override suspend fun updateTagColor(
9598
clanID: ULong,
@@ -193,7 +196,6 @@ class ClanRepositoryImpl : ClanRepository {
193196
}
194197
.toSet()
195198

196-
ShadowColor.none()
197199
return createClanDAO(clanRow, members)
198200
}
199201

@@ -205,7 +207,7 @@ class ClanRepositoryImpl : ClanRepository {
205207
createdByUuid = row[ClansTable.createdBy],
206208
description = row[ClansTable.description],
207209
discordInvite = row[ClansTable.discordInvite],
208-
clanTagColor = ClanTagColor.withDefaultsAsFallback(
210+
clanTagColor = ClanTagColor.clanTagColorOrNull(
209211
foreground = row[ClansTable.tagForegroundColor],
210212
background = row[ClansTable.tagBackgroundColor],
211213
shadow = row[ClansTable.tagShadowColor]

0 commit comments

Comments
 (0)