Update game states & world management

This commit is contained in:
Laurin
2025-12-06 05:41:42 +01:00
parent 2c10e3e7fd
commit 590318772f
14 changed files with 1105 additions and 362 deletions

View File

@@ -0,0 +1,61 @@
package club.mcscrims.speedhg.util
import club.mcscrims.speedhg.SpeedHG
import net.luckperms.api.cacheddata.CachedDataManager
import net.luckperms.api.model.group.Group
import net.luckperms.api.model.user.User
import org.bukkit.entity.Player
import java.util.UUID
object LuckPermsUtils {
private val plugin = SpeedHG.instance
private val luckPerms = plugin.luckPerms
fun getUser(
player: Player
): User?
{
return luckPerms.userManager.getUser( player.uniqueId )
}
fun editUser(
player: Player,
action: (User) -> Unit
) {
luckPerms.userManager.loadUser( player.uniqueId ).thenAcceptAsync( action )
}
fun getGroup(
groupName: String
): Group?
{
return luckPerms.groupManager.getGroup( groupName )
}
fun getCachedData(
player: Player
): CachedDataManager?
{
return getUser( player )?.cachedData
}
fun hasPermission(
uniqueId: UUID,
permission: String
): Boolean
{
val cachedData = luckPerms.userManager.loadUser( uniqueId ).get().cachedData
return cachedData.permissionData.checkPermission( permission ).asBoolean()
}
fun hasPermission(
player: Player,
permission: String
): Boolean
{
return getCachedData( player )?.permissionData?.checkPermission( permission )?.asBoolean()
?: player.hasPermission( permission )
}
}

View File

@@ -0,0 +1,29 @@
package club.mcscrims.speedhg.util
import club.mcscrims.speedhg.SpeedHG
object TimeUtils {
private val plugin = SpeedHG.instance
fun scoreboardTimeFromState(): String
{
val currentTime = plugin.gameManager.getCurrentState()?.remainingSeconds
?: throw IllegalArgumentException("Remaining seconds for state is null!")
return scoreboardTime( currentTime )
}
fun scoreboardTime(
totalSeconds: Int
): String
{
val hours = totalSeconds / 3600
val minutes = (totalSeconds % 3600) / 60
val seconds = totalSeconds % 60
if ( totalSeconds > 3600 )
return String.format( "%02d:%02d:%02d", hours, minutes, seconds )
return String.format( "%02d:%02d", minutes, seconds )
}
}