Skip to content
This repository was archived by the owner on Feb 16, 2022. It is now read-only.

Commit a650bbc

Browse files
committed
doc(util/uuid): util/uuid を追加
1 parent b847e7b commit a650bbc

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ event<PlayerJoinEvent> {
2525
}
2626
```
2727

28+
### その他
29+
- [Util / UUID](sample/README.md#util--uuid)
30+
2831
## 導入
2932

3033
### EasySpigotAPI をプラグインとして導入する

sample/README.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,55 @@ object EventListener : EventRegister {
2828
}
2929
```
3030

31+
## [Util / UUID](util-uuid)
32+
UUID 関連の便利な関数・クラスを追加します。
33+
34+
```kotlin
35+
/**
36+
* [UUID.fromString] を実行する
37+
*/
38+
fun uuid(name: String): UUID
39+
40+
/**
41+
* [uuid] を実行するが、例外が発生した場合は null を返す
42+
*/
43+
fun uuidOrNull(name: String): UUID?
44+
45+
/**
46+
* [Entity] が持つ [UUID] を操作しやすくしたクラス
47+
*
48+
* 変数に保存する際には [Entity] ではなく [UUID] で保存することを推奨する
49+
*/
50+
data class UUIDEntity(val uniqueId: UUID)
51+
52+
/**
53+
* [Player] が持つ [UUID] を操作しやすくしたクラス
54+
*
55+
* 変数に保存する際には [Player] や [OfflinePlayer] ではなく [UUID] で保存することを推奨する
56+
*/
57+
data class UUIDPlayer(val uniqueId: UUID)
58+
```
59+
60+
例として UUIDPlayer を使用した処理を紹介しています。
61+
62+
```kotlin
63+
object PlayerJoinChecker : EventRegister {
64+
/**
65+
* [UUIDPlayer] を使うと再ログインしても同一プレイヤーとして認識される
66+
*
67+
* 2回目のログイン以降は true と出力される
68+
*/
69+
private val useUuidPlayer = mutableSetOf<UUIDPlayer>()
70+
71+
/**
72+
* [Player] を使うと再ログインすると別のインスタンスになる
73+
*
74+
* 2回目のログイン以降も false と出力される
75+
*/
76+
private val usePlayer = mutableSetOf<Player>()
77+
78+
// ... 省略
79+
}
80+
```
81+
3182
[<< 戻る](../README.md)

sample/util-uuid/README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Util / UUID
2+
3+
## [PlayerJoinChecker.kt](src/main/kotlin/com/github/syari/spigot/api/sample/util/uuid/PlayerJoinChecker.kt)
4+
5+
`UUID`, `UUIDPlayer` を使わないと同じプレイヤーがログインしても、別のプレイヤーとして扱われてしまう。
6+
そのため、変数として格納する時は必ずそれらを使用する。
7+
以下の例では、`Player` を用いた時に正常に動作しないことを確認している。
8+
9+
```kotlin
10+
object PlayerJoinChecker : EventRegister {
11+
/**
12+
* [UUIDPlayer] を使うと再ログインしても同一プレイヤーとして認識される
13+
*
14+
* 2回目のログイン以降は true と出力される
15+
*/
16+
private val useUuidPlayer = mutableSetOf<UUIDPlayer>()
17+
18+
/**
19+
* [Player] を使うと再ログインすると別のインスタンスになる
20+
*
21+
* 2回目のログイン以降も false と出力される
22+
*/
23+
private val usePlayer = mutableSetOf<Player>()
24+
25+
override fun Events.register() {
26+
event<PlayerJoinEvent> {
27+
val player = it.player
28+
val uuidPlayer = UUIDPlayer.from(player)
29+
player.sendMessage(
30+
"""
31+
UUIDPlayer を使用: ${useUuidPlayer.contains(uuidPlayer)} (${useUuidPlayer.size})
32+
Player を使用: ${usePlayer.contains(player)} (${usePlayer.size})
33+
""".trimIndent()
34+
)
35+
useUuidPlayer.add(uuidPlayer)
36+
usePlayer.add(player)
37+
}
38+
}
39+
}
40+
```
41+
42+
[<< 戻る](../README.md)

0 commit comments

Comments
 (0)