Skip to content

Commit

Permalink
feat: 🎸 オフラインプレイヤーを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueSheep2804 committed Jul 12, 2023
1 parent 9e42abf commit 82a3457
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 18 deletions.
4 changes: 2 additions & 2 deletions src/main/kotlin/io/github/bluesheep2804/selenechat/IPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ interface IPlugin {
val resource: ResourceData
get() = resourceManager.resource
fun getAllPlayers(): List<SeleneChatPlayer>
fun getPlayer(name: String): SeleneChatPlayer?
fun getPlayer(uuid: UUID): SeleneChatPlayer?
fun getPlayer(name: String): SeleneChatPlayer
fun getPlayer(uuid: UUID): SeleneChatPlayer
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import io.github.bluesheep2804.selenechat.command.MessageCommandBungee
import io.github.bluesheep2804.selenechat.command.SeleneChatCommandBungee
import io.github.bluesheep2804.selenechat.config.SeleneChatConfigManager
import io.github.bluesheep2804.selenechat.listener.ChatListenerBungee
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayer
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerBungee
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerOffline
import io.github.bluesheep2804.selenechat.resource.ResourceManager
import net.kyori.adventure.platform.bungeecord.BungeeAudiences
import net.md_5.bungee.api.plugin.Plugin
Expand Down Expand Up @@ -36,16 +38,23 @@ class SeleneChatBungee : Plugin(), IPlugin {
}

override fun getAllPlayers(): List<SeleneChatPlayerBungee> {
return proxy.players.map { getPlayer(it.uniqueId)!! }
val players = mutableListOf<SeleneChatPlayerBungee>()
for (p in proxy.players) {
when (val player = getPlayer(p.uniqueId)) {
is SeleneChatPlayerBungee -> players += player
is SeleneChatPlayerOffline -> continue
}
}
return players.toList()
}

override fun getPlayer(name: String): SeleneChatPlayerBungee? {
override fun getPlayer(name: String): SeleneChatPlayer {
val player = proxy.getPlayer(name)
return if (player == null) null else SeleneChatPlayerBungee(player)
return if (player == null) SeleneChatPlayerOffline(displayName = name) else SeleneChatPlayerBungee(player)
}

override fun getPlayer(uuid: UUID): SeleneChatPlayerBungee? {
override fun getPlayer(uuid: UUID): SeleneChatPlayer {
val player = proxy.getPlayer(uuid)
return if (player == null) null else SeleneChatPlayerBungee(player)
return if (player == null) SeleneChatPlayerOffline(uuid) else SeleneChatPlayerBungee(player)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import io.github.bluesheep2804.selenechat.command.SeleneChatCommand
import io.github.bluesheep2804.selenechat.command.SeleneChatCommandSpigot
import io.github.bluesheep2804.selenechat.config.SeleneChatConfigManager
import io.github.bluesheep2804.selenechat.listener.ChatListenerSpigot
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayer
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerOffline
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerSpigot
import io.github.bluesheep2804.selenechat.resource.ResourceManager
import net.kyori.adventure.platform.bukkit.BukkitAudiences
Expand Down Expand Up @@ -42,16 +44,23 @@ class SeleneChatSpigot : JavaPlugin(), IPlugin {
}

override fun getAllPlayers(): List<SeleneChatPlayerSpigot> {
return server.onlinePlayers.map { getPlayer(it.uniqueId)!! }
val players = mutableListOf<SeleneChatPlayerSpigot>()
for (p in server.onlinePlayers) {
when (val player = getPlayer(p.uniqueId)) {
is SeleneChatPlayerSpigot -> players += player
is SeleneChatPlayerOffline -> continue
}
}
return players.toList()
}

override fun getPlayer(name: String): SeleneChatPlayerSpigot? {
override fun getPlayer(name: String): SeleneChatPlayer {
val player = server.getPlayerExact(name)
return if (player == null) null else SeleneChatPlayerSpigot(player)
return if (player == null) SeleneChatPlayerOffline(displayName = name) else SeleneChatPlayerSpigot(player)
}

override fun getPlayer(uuid: UUID): SeleneChatPlayerSpigot? {
override fun getPlayer(uuid: UUID): SeleneChatPlayer {
val player = server.getPlayer(uuid)
return if (player == null) null else SeleneChatPlayerSpigot(player)
return if (player == null) SeleneChatPlayerOffline(uuid) else SeleneChatPlayerSpigot(player)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import io.github.bluesheep2804.selenechat.command.SeleneChatCommand
import io.github.bluesheep2804.selenechat.command.SeleneChatCommandVelocity
import io.github.bluesheep2804.selenechat.config.SeleneChatConfigManager
import io.github.bluesheep2804.selenechat.listener.ChatListenerVelocity
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayer
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerOffline
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerVelocity
import io.github.bluesheep2804.selenechat.resource.ResourceManager
import org.slf4j.Logger
Expand Down Expand Up @@ -50,16 +52,23 @@ class SeleneChatVelocity @Inject constructor(val proxy: ProxyServer, val logger:
}

override fun getAllPlayers(): List<SeleneChatPlayerVelocity> {
return proxy.allPlayers.map { getPlayer(it.uniqueId)!! }
val players = mutableListOf<SeleneChatPlayerVelocity>()
for (p in proxy.allPlayers) {
when (val player = getPlayer(p.uniqueId)) {
is SeleneChatPlayerVelocity -> players += player
is SeleneChatPlayerOffline -> continue
}
}
return players.toList()
}

override fun getPlayer(name: String): SeleneChatPlayerVelocity? {
override fun getPlayer(name: String): SeleneChatPlayer {
val player = proxy.getPlayer(name)
return if (player.isEmpty) null else SeleneChatPlayerVelocity(player.get())
return if (player.isEmpty) SeleneChatPlayerOffline(displayName = name) else SeleneChatPlayerVelocity(player.get())
}

override fun getPlayer(uuid: UUID): SeleneChatPlayerVelocity? {
override fun getPlayer(uuid: UUID): SeleneChatPlayer {
val player = proxy.getPlayer(uuid)
return if (player.isEmpty) null else SeleneChatPlayerVelocity(player.get())
return if (player.isEmpty) SeleneChatPlayerOffline(uuid) else SeleneChatPlayerVelocity(player.get())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.github.bluesheep2804.selenechat.command
import io.github.bluesheep2804.selenechat.SeleneChat
import io.github.bluesheep2804.selenechat.message.ChatMessage
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayer
import io.github.bluesheep2804.selenechat.player.SeleneChatPlayerOffline

class MessageCommand : ICommand {
override fun execute(sender: SeleneChatPlayer, args: Array<String>): Boolean {
Expand All @@ -15,7 +16,7 @@ class MessageCommand : ICommand {
return false
}
val receiver = SeleneChat.plugin.getPlayer(args[0])
receiver ?: run {
if (receiver is SeleneChatPlayerOffline) {
sender.sendMessage(SeleneChat.resource.command.messageErrorPlayerNotFoundComponent(args[0]))
return false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ abstract class SeleneChatPlayer {
abstract val displayName: String
abstract val uniqueId: UUID
abstract val currentServerName: String
open val isOnline = true
abstract fun sendMessage(msg: Component)
open fun asHoverEvent(): HoverEvent<out Examinable> {
return HoverEvent.showEntity(HoverEvent.ShowEntity.of(Key.key("player"), uniqueId, Component.text(displayName)))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.github.bluesheep2804.selenechat.player

import net.kyori.adventure.text.Component
import java.util.UUID

class SeleneChatPlayerOffline(override val uniqueId: UUID = UUID.fromString("0-0-0-0-0"), override val displayName: String = "", override val currentServerName: String = "") : SeleneChatPlayer() {
override val isOnline = false
override fun sendMessage(msg: Component) {}
}

0 comments on commit 82a3457

Please sign in to comment.