-
Notifications
You must be signed in to change notification settings - Fork 0
Version/1.21.11 dev #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
28eae48
600fa08
8df9116
23553d8
f4ad73c
a36b951
f808c82
1a92bf8
b6858f4
4be0ab8
22eb17a
62f6d58
cd9dd27
995158c
7239913
f0f585f
250d7fa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,102 @@ | ||
| name: Publish to Maven & Create GitHub Release | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - 'version/*' | ||
| workflow_dispatch: | ||
|
|
||
| env: | ||
| SLNE_SNAPSHOTS_REPO_USERNAME: ${{ secrets.SLNE_SNAPSHOTS_REPO_USERNAME }} | ||
| SLNE_SNAPSHOTS_REPO_PASSWORD: ${{ secrets.SLNE_SNAPSHOTS_REPO_PASSWORD }} | ||
| SLNE_RELEASES_REPO_USERNAME: ${{ secrets.SLNE_RELEASES_REPO_USERNAME }} | ||
| SLNE_RELEASES_REPO_PASSWORD: ${{ secrets.SLNE_RELEASES_REPO_PASSWORD }} | ||
| MODULE_REGEX: "surf-tab-api.*-all\\.jar$|surf-tab-velocity.*-all\\.jar$" | ||
| DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} | ||
|
|
||
| jobs: | ||
| build: | ||
| runs-on: ubuntu-latest | ||
| environment: production | ||
| steps: | ||
| - name: Collect Workflow Telemetry | ||
| uses: catchpoint/workflow-telemetry-action@v2 | ||
|
|
||
| - name: Checkout Repository | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 0 | ||
|
|
||
| - name: Cache Gradle packages | ||
| uses: actions/cache@v3 | ||
| with: | ||
| path: | | ||
| ~/.gradle/caches | ||
| ~/.gradle/wrapper | ||
| key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | ||
| restore-keys: gradle-${{ runner.os }}- | ||
|
|
||
| - name: Setup JDK | ||
| uses: actions/setup-java@v4 | ||
| with: | ||
| distribution: 'graalvm' | ||
| java-version: '24' | ||
|
|
||
| - name: Build all modules with Gradle | ||
| run: ./gradlew build shadowJar --parallel --no-scan | ||
|
|
||
| - name: Publish all modules to Maven | ||
| run: ./gradlew publish --parallel --no-scan | ||
|
|
||
| - name: Extract Project Version and Snapshot Flag from Gradle | ||
| id: get_version | ||
| run: | | ||
| VERSION=$(./gradlew properties --no-daemon \ | ||
| | grep '^version:' \ | ||
| | awk '{print $2}') | ||
| SNAPSHOT_FLAG=$(./gradlew properties --no-daemon \ | ||
| | grep '^snapshot:' \ | ||
| | awk '{print $2}') | ||
| if [ "$SNAPSHOT_FLAG" = "true" ]; then | ||
| VERSION="${VERSION}-SNAPSHOT" | ||
| fi | ||
| echo "VERSION=$VERSION" >> $GITHUB_ENV | ||
| echo "SNAPSHOT_FLAG=$SNAPSHOT_FLAG" >> $GITHUB_ENV | ||
|
|
||
| - name: Determine release flags | ||
| run: | | ||
| CURRENT_BRANCH=${GITHUB_REF#refs/heads/} | ||
| # prerelease only for snapshots | ||
| if [ "${SNAPSHOT_FLAG}" = "true" ]; then | ||
| echo "PRERELEASE=true" >> $GITHUB_ENV | ||
| else | ||
| echo "PRERELEASE=false" >> $GITHUB_ENV | ||
| fi | ||
| # make_latest false for snapshots or non-default branches | ||
| if [ "${SNAPSHOT_FLAG}" = "true" ] || [ "${CURRENT_BRANCH}" != "${DEFAULT_BRANCH}" ]; then | ||
| echo "MAKE_LATEST=false" >> $GITHUB_ENV | ||
| else | ||
| echo "MAKE_LATEST=true" >> $GITHUB_ENV | ||
| fi | ||
|
|
||
| - name: Find and filter JAR files | ||
| id: find_jars | ||
| run: | | ||
| echo "JAR_FILES<<EOF" >> $GITHUB_ENV | ||
| find . -path "**/build/libs/*.jar" \ | ||
| | grep -E "${{ env.MODULE_REGEX }}" \ | ||
| >> $GITHUB_ENV | ||
| echo "EOF" >> $GITHUB_ENV | ||
|
|
||
| - name: Create GitHub Release | ||
| uses: softprops/action-gh-release@v2 | ||
| with: | ||
| tag_name: v${{ env.VERSION }} | ||
| name: Release ${{ env.VERSION }} | ||
| draft: false | ||
| prerelease: ${{ env.PRERELEASE }} | ||
| make_latest: ${{ env.MAKE_LATEST }} | ||
| files: ${{ env.JAR_FILES }} | ||
| generate_release_notes: true | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,14 +1,28 @@ | ||
| import dev.slne.surf.surfapi.gradle.util.slneReleases | ||
|
|
||
| buildscript { | ||
| repositories { | ||
| gradlePluginPortal() | ||
| maven("https://repo.slne.dev/repository/maven-public/") { name = "maven-public" } | ||
| } | ||
| dependencies { | ||
| classpath("dev.slne.surf:surf-api-gradle-plugin:1.21.11-1.7.0") | ||
| classpath("dev.slne.surf:surf-api-gradle-plugin:1.21.11+") | ||
| } | ||
| } | ||
|
|
||
| allprojects { | ||
| group = "dev.slne.surf.tab" | ||
| version = findProperty("version") as String | ||
| } | ||
|
|
||
| subprojects { | ||
| afterEvaluate { | ||
| plugins.withType<PublishingPlugin> { | ||
| configure<PublishingExtension> { | ||
| repositories { | ||
| slneReleases() | ||
| } | ||
| } | ||
| } | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| kotlin.code.style=official | ||
| kotlin.stdlib.default.dependency=false | ||
| org.gradle.parallel=true | ||
| version=1.21.11-1.0.0-SNAPSHOT | ||
| version=1.21.11-1.0.2-SNAPSHOT |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,8 @@ | ||
| plugins { | ||
| id("dev.slne.surf.surfapi.gradle.velocity") | ||
| id("dev.slne.surf.surfapi.gradle.core") | ||
| } | ||
|
|
||
|
|
||
| surfCoreApi { | ||
| withSurfRedis() | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| package dev.slne.surf.tab.api.redis | ||
|
|
||
| import dev.slne.surf.redis.event.RedisEvent | ||
| import kotlinx.serialization.Contextual | ||
| import kotlinx.serialization.Serializable | ||
| import java.util.* | ||
|
|
||
| @Serializable | ||
| data class TabEntryUpdateRedisEvent( | ||
| val toUpdateUuid: @Contextual UUID | ||
| ) : RedisEvent() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| package dev.slne.surf.tab.api.redis | ||
|
|
||
| import dev.slne.surf.redis.event.RedisEvent | ||
| import kotlinx.serialization.Contextual | ||
| import kotlinx.serialization.Serializable | ||
| import java.util.* | ||
|
|
||
| @Serializable | ||
| data class TabHideRedisEvent( | ||
| val player: @Contextual UUID, | ||
| val toHide: @Contextual UUID | ||
| ) : RedisEvent() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| package dev.slne.surf.tab.api.redis | ||
|
|
||
| import dev.slne.surf.redis.event.RedisEvent | ||
| import kotlinx.serialization.Contextual | ||
| import kotlinx.serialization.Serializable | ||
| import java.util.* | ||
|
|
||
| @Serializable | ||
| data class TabShowRedisEvent( | ||
| val player: @Contextual UUID, | ||
| val toShow: @Contextual UUID | ||
| ) : RedisEvent() |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,22 +1,34 @@ | ||||||||||||||||||||||||
| package dev.slne.surf.tab.velocity.hook | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| import dev.slne.surf.tab.api.redis.TabEntryUpdateRedisEvent | ||||||||||||||||||||||||
| import dev.slne.surf.tab.velocity.plugin | ||||||||||||||||||||||||
| import dev.slne.surf.tab.velocity.service.tablistService | ||||||||||||||||||||||||
| import dev.slne.surf.tab.velocity.redisApi | ||||||||||||||||||||||||
| import kotlinx.coroutines.future.await | ||||||||||||||||||||||||
| import net.luckperms.api.LuckPermsProvider | ||||||||||||||||||||||||
| import net.luckperms.api.event.node.NodeAddEvent | ||||||||||||||||||||||||
| import net.luckperms.api.event.node.NodeRemoveEvent | ||||||||||||||||||||||||
| import net.luckperms.api.model.user.User | ||||||||||||||||||||||||
| import java.util.* | ||||||||||||||||||||||||
| import kotlin.jvm.optionals.getOrNull | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| object LuckPermsHook { | ||||||||||||||||||||||||
| private val luckPerms by lazy { | ||||||||||||||||||||||||
| LuckPermsProvider.get() | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| fun getWeight(player: UUID) = | ||||||||||||||||||||||||
| luckPerms.userManager.getUser(player)?.cachedData?.metaData?.getMetaValue("weight") | ||||||||||||||||||||||||
| ?.toInt() ?: 0 | ||||||||||||||||||||||||
| suspend fun getPrefix(player: UUID) = | ||||||||||||||||||||||||
| getOrLoadUser(player).primaryGroup.let { | ||||||||||||||||||||||||
| luckPerms.groupManager.getGroup(it)?.cachedData?.metaData?.prefix ?: "" | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| suspend fun getSuffix(player: UUID) = | ||||||||||||||||||||||||
| getOrLoadUser(player).primaryGroup.let { | ||||||||||||||||||||||||
| luckPerms.groupManager.getGroup(it)?.cachedData?.metaData?.suffix ?: "" | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| suspend fun getWeight(player: UUID) = | ||||||||||||||||||||||||
| getOrLoadUser(player).primaryGroup.let { | ||||||||||||||||||||||||
| luckPerms.groupManager.getGroup(it)?.weight?.orElse(0) ?: 0 | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| fun load() { | ||||||||||||||||||||||||
| luckPerms.eventBus.subscribe(plugin, NodeAddEvent::class.java) { event -> | ||||||||||||||||||||||||
|
|
@@ -30,10 +42,12 @@ object LuckPermsHook { | |||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| private fun updatePlayerInTablist(user: User) { | ||||||||||||||||||||||||
| val player = plugin.proxy.getPlayer(user.uniqueId).getOrNull() ?: return | ||||||||||||||||||||||||
| tablistService.updatePlayerInTablist(player) | ||||||||||||||||||||||||
| suspend fun getOrLoadUser(player: UUID): User { | ||||||||||||||||||||||||
| return luckPerms.userManager.getUser(player) ?: luckPerms.userManager.loadUser(player) | ||||||||||||||||||||||||
| .await() | ||||||||||||||||||||||||
|
Comment on lines
+46
to
+47
|
||||||||||||||||||||||||
| return luckPerms.userManager.getUser(player) ?: luckPerms.userManager.loadUser(player) | |
| .await() | |
| val existingUser = luckPerms.userManager.getUser(player) | |
| if (existingUser != null) { | |
| return existingUser | |
| } | |
| val loadedUser = luckPerms.userManager.loadUser(player).await() | |
| return requireNotNull(loadedUser) { | |
| "LuckPerms returned null when loading user data for '$player'" | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The variable name MODULE_REGEX suggests it should be a regex pattern, but it's actually used with grep -E which expects an extended regex pattern. The current value uses shell filename patterns (ending with $) which is correct, but the name could be more descriptive such as MODULE_JAR_PATTERN to clarify its purpose.