Compare commits

...

2 commits

Author SHA1 Message Date
Caadiq
727769a170 채팅 비우기 메시지 수정 2025-12-17 19:16:58 +09:00
Caadiq
dc29e0e251 readme 수정 2025-12-17 19:15:05 +09:00
2 changed files with 48 additions and 43 deletions

View file

@ -10,13 +10,13 @@
## ✨ 주요 기능
- 📍 **좌표 관리** - GUI 기반 좌표 저장 및 텔레포트
- 📍 **좌표 관리** - 좌표 저장 및 텔레포트
- 🏷️ **닉네임 시스템** - 플레이어 닉네임 설정
- 🏠 **스폰 관리** - 커스텀 스폰 지점 설정
- 🚀 **텔레포트** - 플레이어 간 텔레포트
- 🛡️ **안티몹** - 특정 몹 비활성화
- 🌾 **밭 보호** - 밟아도 밭 안 망가짐
- 💬 **채팅 관리** - 채팅 형식 및 비우기
- 🛡️ **안티몹** - 특정 몹 패턴 비활성화
- 🌾 **밭 보호** - 밟아도 밭이 망가지지 않도록 보호
- 💬 **채팅 관리** - 채팅 형식 변경
---
@ -26,8 +26,8 @@
| 명령어 | 설명 |
| ------------------ | -------------------- |
| `/좌표` | 저장된 좌표 목록 GUI |
| `/좌표추가 <이름>` | 현재 위치 저장 |
| `/좌표` | 저장된 좌표 목록 |
| `/좌표추가 <이름>` | 현재 위치 좌표 저장 |
| `/좌표제거 <이름>` | 저장된 좌표 삭제 |
| `/좌표이동 <이름>` | 해당 좌표로 텔레포트 |
@ -57,9 +57,9 @@
### 안티몹
| 명령어 | 설명 |
| --------------------- | --------------- |
| `/안티몹`, `/antimob` | 안티몹 설정 GUI |
| 명령어 | 설명 |
| --------------------- | ----------- |
| `/안티몹`, `/antimob` | 안티몹 설정 |
### 밭 보호

View file

@ -32,8 +32,9 @@ object ChatCommand {
private fun hasPermissionOrSend(player: ServerPlayer?, requiredLevel: Int = 2): Boolean {
if (player != null && !player.hasPermissions(requiredLevel)) {
player.sendSystemMessage(
Component.literal("해당 명령어를 실행할 권한이 없습니다.")
.withStyle { it.withColor(ChatFormatting.RED) }
Component.literal("해당 명령어를 실행할 권한이 없습니다.").withStyle {
it.withColor(ChatFormatting.RED)
}
)
return false
}
@ -42,49 +43,53 @@ object ChatCommand {
private fun registerReloadCommand(root: String, sub: String, event: RegisterCommandsEvent) {
event.dispatcher.register(
Commands.literal(root).then(
Commands.literal(sub).executes { context ->
val player = getPlayerOrNull(context.source)
if (!hasPermissionOrSend(player)) return@executes 0
Commands.literal(root)
.then(
Commands.literal(sub).executes { context ->
val player = getPlayerOrNull(context.source)
if (!hasPermissionOrSend(player)) return@executes 0
ChatConfig.loadConfig()
ChatConfig.loadConfig()
val success = Component.literal("채팅 형식을 새로고침했습니다.")
.withStyle { it.withColor(ChatFormatting.GOLD) }
val success =
Component.literal("채팅 형식을 새로고침했습니다.").withStyle {
it.withColor(ChatFormatting.GOLD)
}
if (player == null)
context.source.sendSuccess({ success }, false)
else
player.sendSystemMessage(success)
if (player == null)
context.source.sendSuccess({ success }, false)
else player.sendSystemMessage(success)
1
}
)
1
}
)
)
}
private fun registerClearCommand(root: String, sub: String, event: RegisterCommandsEvent) {
event.dispatcher.register(
Commands.literal(root).then(
Commands.literal(sub).executes { context ->
val player = getPlayerOrNull(context.source)
if (!hasPermissionOrSend(player)) return@executes 0
Commands.literal(root)
.then(
Commands.literal(sub).executes { context ->
val player = getPlayerOrNull(context.source)
if (!hasPermissionOrSend(player)) return@executes 0
val server = context.source.server
val allPlayers = server.playerList.players.filterIsInstance<ServerPlayer>()
ChatUtils.clearChatForAll(allPlayers)
val server = context.source.server
val allPlayers =
server.playerList.players.filterIsInstance<
ServerPlayer>()
ChatUtils.clearChatForAll(allPlayers)
server.playerList.broadcastSystemMessage(
Component.literal("📢")
.append(Component.literal("\u00A0\u00A0채팅창을 비웠습니다.")
.withStyle { it.withColor(ChatFormatting.AQUA) }
),
false
)
server.playerList.broadcastSystemMessage(
Component.literal("\u00A0\u00A0채팅창을 비웠습니다.").withStyle {
it.withColor(ChatFormatting.AQUA)
},
false
)
1
}
)
1
}
)
)
}
}
}