Skip to content

Commit 383017d

Browse files
authored
Merge pull request #534 from VOLLEY888/fix/inventory-show-armor
feat(sign): 禁止无发言权限的玩家编辑告示牌
2 parents 683d49f + 050e7cd commit 383017d

6 files changed

Lines changed: 52 additions & 4 deletions

File tree

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/display/function/standard/InventoryShow.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,11 @@ object InventoryShow : Function("INVENTORY") {
134134
})
135135
inv.setItem(3, inventory.itemInHand.replaceAir())
136136
inv.setItem(4, PLACEHOLDER_ITEM)
137-
inv.setItem(5, inventory.getItem(inventory.size - 2).replaceAir())
138-
inv.setItem(6, inventory.getItem(inventory.size - 3).replaceAir())
139-
inv.setItem(7, inventory.getItem(inventory.size - 4).replaceAir())
140-
inv.setItem(8, inventory.getItem(inventory.size - 5).replaceAir())
137+
val armor = inventory.armorContents
138+
inv.setItem(5, armor[3].replaceAir()) // 头盔
139+
inv.setItem(6, armor[2].replaceAir()) // 胸甲
140+
inv.setItem(7, armor[1].replaceAir()) // 护腿
141+
inv.setItem(8, armor[0].replaceAir()) // 靴子
141142
(9..17).forEach { slot -> inv.setItem(slot, PLACEHOLDER_ITEM) }
142143
}
143144
onClick(lock = true)

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/internal/listener/ListenerSignChange.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ package me.arasple.mc.trchat.module.internal.listener
22

33
import me.arasple.mc.trchat.TrChat
44
import me.arasple.mc.trchat.module.adventure.toAdventure
5+
import io.papermc.paper.event.player.PlayerOpenSignEvent
56
import me.arasple.mc.trchat.module.internal.TrChatBukkit
7+
import me.arasple.mc.trchat.util.data
8+
import me.arasple.mc.trchat.util.session
69
import me.arasple.mc.trchat.util.color.MessageColors
710
import me.arasple.mc.trchat.util.parseSimple
11+
import org.bukkit.entity.Player
812
import org.bukkit.event.block.SignChangeEvent
913
import taboolib.common.platform.Platform
1014
import taboolib.common.platform.PlatformSide
1115
import taboolib.common.platform.event.EventPriority
1216
import taboolib.common.platform.event.SubscribeEvent
1317
import taboolib.common.platform.function.adaptPlayer
1418
import taboolib.module.configuration.ConfigNode
19+
import taboolib.platform.util.sendLang
1520

1621
/**
1722
* @author ItsFlicker
@@ -24,6 +29,9 @@ object ListenerSignChange {
2429
var filter = true
2530
private set
2631

32+
@ConfigNode("Chat.Sign-Edit-Permission-Check", "settings.yml")
33+
var signEditPermissionCheck = true
34+
2735
@ConfigNode("Color.Sign", "settings.yml")
2836
var color = true
2937
private set
@@ -53,4 +61,21 @@ object ListenerSignChange {
5361
}
5462
}
5563
}
64+
65+
@SubscribeEvent(priority = EventPriority.LOW, ignoreCancelled = true)
66+
fun onPlayerOpenSign(e: PlayerOpenSignEvent) {
67+
if (!signEditPermissionCheck) return
68+
val player = e.player
69+
if (!player.hasPermission("trchat.bypass.signedit") && !canSpeak(player)) {
70+
e.isCancelled = true
71+
player.sendLang("Sign-Edit-No-Permission")
72+
}
73+
}
74+
75+
private fun canSpeak(player: Player): Boolean {
76+
if (TrChatBukkit.isGlobalMuting && !player.hasPermission("trchat.bypass.globalmute")) return false
77+
if (player.data.isMuted) return false
78+
val channel = player.session.getChannel()
79+
return channel == null || channel.canSpeak(player)
80+
}
5681
}

project/runtime-bukkit/src/main/resources/lang/en_US.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,13 @@ Channel-Bad-Language:
224224
sound: 'ENTITY_ITEM_BREAK'
225225
volume: 1
226226
pitch: 0
227+
Sign-Edit-No-Permission:
228+
- type: actionbar
229+
text: '&cNo Edit Sign Permission'
230+
- type: sound
231+
sound: 'ENTITY_ITEM_BREAK'
232+
volume: 1
233+
pitch: 0
227234

228235
Mute-Muted-Player: '&8[&3Tr&bChat&8] &7You muted {0} for {1}.Reason: {2}'
229236
Mute-Cancel-Muted-Player: '&8[&3Tr&bChat&8] &7You cancelled muting {0}.'

project/runtime-bukkit/src/main/resources/lang/es_ES.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,13 @@ Channel-Bad-Language:
217217
sound: 'ENTITY_ITEM_BREAK'
218218
volume: 1
219219
pitch: 0
220+
Sign-Edit-No-Permission:
221+
- type: actionbar
222+
text: '&cNo Edit Sign Permission'
223+
- type: sound
224+
sound: 'ENTITY_ITEM_BREAK'
225+
volume: 1
226+
pitch: 0
220227

221228
Mute-Muted-Player: '&8[&3Tr&bChat&8] &7Fuiste silenciado por {0}, el tiempo de {1}.Razón: {2}'
222229
Mute-Cancel-Muted-Player: '&8[&3Tr&bChat&8] &7El silencio fue cancelado {0}.'

project/runtime-bukkit/src/main/resources/lang/zh_CN.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,13 @@ Channel-Bad-Language:
227227
sound: 'ENTITY_ITEM_BREAK'
228228
volume: 1
229229
pitch: 0
230+
Sign-Edit-No-Permission:
231+
- type: actionbar
232+
text: '&c你没有权限编辑告示牌'
233+
- type: sound
234+
sound: 'ENTITY_ITEM_BREAK'
235+
volume: 1
236+
pitch: 0
230237

231238
Mute-Muted-Player: '&8[&3Tr&bChat&8] &7你已禁言 {0} {1}.原因: {2}'
232239
Mute-Cancel-Muted-Player: '&8[&3Tr&bChat&8] &7你已取消禁言 {0}.'

project/runtime-bukkit/src/main/resources/settings.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Chat:
3838
Anti-Repeat: 0.85
3939
Cooldown: '2.0s'
4040
Length-Limit: 100
41+
Sign-Edit-Permission-Check: false
4142

4243
Color:
4344
Chat: true

0 commit comments

Comments
 (0)