11package me.arasple.mc.trchat.module.internal.listener
22
3+ import me.arasple.mc.trchat.module.internal.TrChatBukkit
34import me.arasple.mc.trchat.util.color.MessageColors
5+ import me.arasple.mc.trchat.util.data
6+ import me.arasple.mc.trchat.util.session
7+ import org.bukkit.entity.Player
48import org.bukkit.event.player.PlayerEditBookEvent
59import taboolib.common.platform.Platform
610import taboolib.common.platform.PlatformSide
711import taboolib.common.platform.event.EventPriority
812import taboolib.common.platform.event.SubscribeEvent
913import taboolib.module.configuration.ConfigNode
14+ import taboolib.platform.util.sendLang
1015
1116/* *
1217 * @author ItsFlicker
@@ -19,6 +24,9 @@ object ListenerBookEdit {
1924 var color = true
2025 private set
2126
27+ @ConfigNode(" Chat.Permission-Check.Book" , " settings.yml" )
28+ var bookEditPermissionCheck = false
29+
2230 @Suppress(" Deprecation" )
2331 @SubscribeEvent(priority = EventPriority .HIGHEST , ignoreCancelled = true )
2432 fun onBookEdit (e : PlayerEditBookEvent ) {
@@ -29,4 +37,21 @@ object ListenerBookEdit {
2937 }
3038 e.newBookMeta = meta
3139 }
40+
41+ @SubscribeEvent(priority = EventPriority .LOW , ignoreCancelled = true )
42+ fun onBookEditCheck (e : PlayerEditBookEvent ) {
43+ if (! bookEditPermissionCheck) return
44+ val player = e.player
45+ if (! player.hasPermission(" trchat.bypass.bookedit" ) && ! canSpeak(player)) {
46+ e.isCancelled = true
47+ player.sendLang(" Book-Edit-No-Permission" )
48+ }
49+ }
50+
51+ private fun canSpeak (player : Player ): Boolean {
52+ if (TrChatBukkit .isGlobalMuting && ! player.hasPermission(" trchat.bypass.globalmute" )) return false
53+ if (player.data.isMuted) return false
54+ val channel = player.session.getChannel()
55+ return channel == null || channel.canSpeak(player)
56+ }
3257}
0 commit comments