|
1 | 1 | package dev.felnull.commands; |
2 | 2 |
|
3 | 3 | import dev.felnull.BetterStorage; |
4 | | -import dev.felnull.Data.DeletedGroupBackup; |
5 | 4 | import dev.felnull.Data.DeletedGroupInfo; |
6 | 5 | import dev.felnull.Data.GroupData; |
7 | 6 | import dev.felnull.DataIO.*; |
8 | | -import dev.felnull.task.ItemLogSummaryTask; |
9 | | -import net.kyori.adventure.text.Component; |
10 | | -import net.kyori.adventure.text.event.ClickEvent; |
11 | | -import net.kyori.adventure.text.event.HoverEvent; |
12 | 7 | import net.kyori.adventure.text.format.NamedTextColor; |
13 | 8 | import org.bukkit.Bukkit; |
14 | 9 | import org.bukkit.ChatColor; |
@@ -115,14 +110,9 @@ public void run() { |
115 | 110 | sender.sendMessage("[ " + nameOrGroup + " ] のログ一覧:"); |
116 | 111 | for (LocalDateTime log : logs) { |
117 | 112 | String formatted = log.format(FORMATTER); |
118 | | - Component msg = Component.text(" - [ ") |
119 | | - .append(Component.text(formatted) |
120 | | - .color(NamedTextColor.AQUA) |
121 | | - .clickEvent(ClickEvent.suggestCommand("/bstorage rollback " + nameOrGroup + " \"" + formatted + "\"")) |
122 | | - |
123 | | - .hoverEvent(HoverEvent.showText(Component.text("クリックでロールバックコマンドをチャット欄に入力")))) |
124 | | - .append(Component.text(" ]")); |
125 | | - sender.sendMessage(msg); |
| 113 | + String command = "/bstorage rollback " + nameOrGroup + " \"" + formatted + "\""; |
| 114 | + String hover = "クリックでロールバックコマンドをチャット欄に入力"; |
| 115 | + ComponentUtil.sendClickableMessage(sender, formatted, command, hover); |
126 | 116 | } |
127 | 117 | }); |
128 | 118 | } |
@@ -214,27 +204,19 @@ public void run() { |
214 | 204 | if (combined.isEmpty()) { |
215 | 205 | sender.sendMessage("ログは見つかりませんでした。"); |
216 | 206 | } else { |
217 | | - sender.sendMessage(Component.text("[ " + nameOrGroup + " ] のログ一覧:").color(NamedTextColor.YELLOW)); |
| 207 | + ComponentUtil.sendPlainMessage(sender, "[ " + nameOrGroup + " ] のログ一覧:", NamedTextColor.YELLOW); |
218 | 208 | for (LocalDateTime log : combined) { |
219 | 209 | String formatted = log.format(FORMATTER); |
220 | 210 | boolean isSnapshot = snapshots.contains(log); |
221 | 211 |
|
222 | | - NamedTextColor color = isSnapshot ? NamedTextColor.GREEN : NamedTextColor.AQUA; |
223 | 212 | String command = isSnapshot |
224 | | - ? "/bstorage rollback " + nameOrGroup + " " + formatted |
225 | | - : "/bstorage diff " + nameOrGroup + " " + formatted; |
| 213 | + ? "/bstorage rollback " + nameOrGroup + " \"" + formatted + "\"" |
| 214 | + : "/bstorage diff " + nameOrGroup + " \"" + formatted + "\""; |
226 | 215 | String hoverText = isSnapshot |
227 | 216 | ? "クリックでロールバックコマンドを入力" |
228 | 217 | : "クリックで差分表示コマンドを入力"; |
229 | 218 |
|
230 | | - Component msg = Component.text(" - [ ") |
231 | | - .append(Component.text(formatted) |
232 | | - .color(color) |
233 | | - .clickEvent(ClickEvent.suggestCommand(command)) |
234 | | - .hoverEvent(HoverEvent.showText(Component.text(hoverText)))) |
235 | | - .append(Component.text(" ]")); |
236 | | - |
237 | | - sender.sendMessage(msg); |
| 219 | + ComponentUtil.sendClickableMessage(sender, formatted, command, hoverText); |
238 | 220 | } |
239 | 221 | } |
240 | 222 | }); |
@@ -386,22 +368,18 @@ public void run() { |
386 | 368 | } |
387 | 369 |
|
388 | 370 | Bukkit.getScheduler().runTask(BetterStorage.BSPlugin, () -> { |
389 | | - sender.sendMessage(Component.text("削除されたグループ一覧:").color(NamedTextColor.YELLOW)); |
| 371 | + ComponentUtil.sendPlainMessage(sender, "削除されたグループ一覧:", NamedTextColor.YELLOW); |
390 | 372 |
|
391 | 373 | for (DeletedGroupInfo info : deletedGroups) { |
392 | 374 | String label = info.displayName != null ? info.displayName : info.groupName; |
393 | 375 | String uuid = info.groupUUID.toString(); |
394 | 376 | String time = info.timestamp.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
395 | 377 |
|
396 | | - Component msg = Component.text(" - [ ") |
397 | | - .append(Component.text(label + " (" + time + ")") |
398 | | - .color(NamedTextColor.AQUA) |
399 | | - .clickEvent(ClickEvent.suggestCommand("/bstorage recover " + uuid)) |
400 | | - .hoverEvent(HoverEvent.showText(Component.text("クリックで復元コマンドを入力")))) |
401 | | - .append(Component.text(" ]")) |
402 | | - .color(NamedTextColor.GRAY); |
| 378 | + String text = label + " (" + time + ")"; |
| 379 | + String command = "/bstorage recover " + uuid; |
| 380 | + String hover = "クリックで復元コマンドを入力"; |
403 | 381 |
|
404 | | - sender.sendMessage(msg); |
| 382 | + ComponentUtil.sendClickableMessage(sender, text, command, hover); |
405 | 383 | } |
406 | 384 | }); |
407 | 385 | } |
@@ -575,4 +553,10 @@ public void run() { |
575 | 553 | // 第3引数以降の補完は提供しない |
576 | 554 | return suggestions; |
577 | 555 | } |
| 556 | + |
| 557 | + // 共通形式で置換するメソッド |
| 558 | + private String buildInteractiveMessage(String label, String commandHint) { |
| 559 | + return ChatColor.GRAY + " - [ " + ChatColor.AQUA + label + ChatColor.GRAY + " ] " + ChatColor.DARK_GRAY + "(「" + commandHint + "」を手動で入力してください)"; |
| 560 | + } |
| 561 | + |
578 | 562 | } |
0 commit comments