Skip to content

Commit

Permalink
[1.4.0-beta2]重构死亡消息组件生成,优化配置格式
Browse files Browse the repository at this point in the history
  • Loading branch information
YufiriaMazenta committed Sep 18, 2024
1 parent 3d2510d commit f60917e
Show file tree
Hide file tree
Showing 3 changed files with 115 additions and 109 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

group = "pers.yufiria"
version = "1.4.0-beta1"
version = "1.4.0-beta2"

repositories {
mavenLocal()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package pers.yufiria.deathmsg.listener
import crypticlib.chat.BukkitMsgSender
import crypticlib.chat.BukkitTextProcessor
import crypticlib.listener.EventListener
import me.clip.placeholderapi.PlaceholderAPI
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.ComponentLike
import net.kyori.adventure.text.TextReplacementConfig
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.network.chat.ComponentContents
import net.minecraft.network.chat.IChatBaseComponent
Expand Down Expand Up @@ -39,7 +39,7 @@ object PlayerDeathHandler: Listener {
private var toChatMethod: Method? = null
private var getComponentContentsMethod: Method? = null
private var getObjsMethod: Method? = null
private var legacySerializer = LegacyComponentSerializer.legacy('&')
private var legacySerializer = LegacyComponentSerializer.builder().hexColors().hexCharacter('#').character('&').build()

@EventHandler
fun onPlayerDeathReplaceMessage(event: PlayerDeathEvent) {
Expand All @@ -64,7 +64,7 @@ object PlayerDeathHandler: Listener {
DeathMessages.addDeathMessage(deathCause, mutableListOf(deathCause))
return
}
val message = DeathMessages.getMessage(deadPlayer, deathCause)
var message = DeathMessages.getMessage(deadPlayer, deathCause)
if (message == null) {
event.deathMessage = null
return
Expand All @@ -88,7 +88,15 @@ object PlayerDeathHandler: Listener {
}

//组装成完整的死亡消息组件
val deathMsgComponent = Component.translatable(BukkitTextProcessor.color(message), *objList.toTypedArray())
message = BukkitTextProcessor.placeholder(deadPlayer, message);
var deathMsgComponent: Component = legacySerializer.deserialize(message)
deathMsgComponent = deathMsgComponent.replaceText(TextReplacementConfig.builder().matchLiteral("%dead_player%").replacement(objList[0]).build())
if (objList.size >= 2) {
deathMsgComponent = deathMsgComponent.replaceText(TextReplacementConfig.builder().matchLiteral("%killer%").replacement(objList[1]).build())
}
if (objList.size >= 3) {
deathMsgComponent = deathMsgComponent.replaceText(TextReplacementConfig.builder().matchLiteral("%kill_item%").replacement(objList[2]).build())
}
entityHurtPlayerMap.remove(deadPlayer.uniqueId)
val sendEvent = DeathMessageSendEvent(deathMsgComponent, deadPlayer)
if (sendEvent.callEvent()) {
Expand Down Expand Up @@ -184,15 +192,13 @@ object PlayerDeathHandler: Listener {
}

private fun getDeadPlayerComponent(deadPlayer: Player): Component {
var deadPlayerDisplayName =
val deadPlayerComponent: Component =
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null)
BukkitTextProcessor.color(PlaceholderAPI.setPlaceholders(deadPlayer, Configs.playerNameFormat.value()))
legacySerializer.deserialize(BukkitTextProcessor.placeholder(deadPlayer, Configs.playerNameFormat.value()))
else
deadPlayer.displayName
deadPlayerDisplayName = BukkitTextProcessor.color(deadPlayerDisplayName)
val deserialize = legacySerializer.deserialize(deadPlayerDisplayName)
deserialize.hoverEvent(deadPlayer.asHoverEvent())
return deserialize
deadPlayer.displayName()
deadPlayerComponent.hoverEvent(deadPlayer.asHoverEvent())
return deadPlayerComponent
}

private fun getKillerComponent(deadPlayer: Player): Component {
Expand Down
194 changes: 97 additions & 97 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,203 +4,203 @@ death_message_type: chat
proxy: false
death_message:
death_attack_anvil:
- "%1$s被铁砧砸中了"
- "%dead_player%被铁砧砸中了"
death_attack_anvil_player:
- "%1$s在与%2$s战斗时被坠落的铁砧压扁了"
- "%dead_player%在与%killer%战斗时被坠落的铁砧压扁了"
death_attack_arrow:
- "%1$s被%2$s射杀"
- "%dead_player%被%killer%射杀"
death_attack_arrow_item:
- "%1$s被%2$s用%3$s射杀"
- "%dead_player%被%killer%用%kill_item%射杀"
death_attack_badRespawnPoint_message:
- "%1$s被%2$s杀死了"
- "%dead_player%被%killer%杀死了"
bad_respawn_point:
- "[刻意的游戏设计]"
death_attack_cactus:
- "%1$s被戳死了"
- "%dead_player%被戳死了"
death_attack_cactus_player:
- "%1$s在试图逃离%2$s时撞上了仙人掌"
- "%dead_player%在试图逃离%killer%时撞上了仙人掌"
death_attack_cramming:
- "%1$s因被过度挤压而死"
- "%dead_player%因被过度挤压而死"
death_attack_cramming_player:
- "%1$s被%2$s挤扁了"
- "%dead_player%被%killer%挤扁了"
death_attack_dragonBreath:
- "%1$s被龙息烤熟了"
- "%dead_player%被龙息烤熟了"
death_attack_dragonBreath_player:
- "%1$s被%2$s的龙息烤熟了"
- "%dead_player%被%killer%的龙息烤熟了"
death_attack_drown:
- "%1$s淹死了"
- "%dead_player%淹死了"
death_attack_drown_player:
- "%1$s在试图逃离%2$s时淹死了"
- "%dead_player%在试图逃离%killer%时淹死了"
death_attack_dryout:
- "%1$s因脱水而死"
- "%dead_player%因脱水而死"
death_attack_dryout_player:
- "%1$s在试图逃离%2$s时因脱水而死"
- "%dead_player%在试图逃离%killer%时因脱水而死"
death_attack_even_more_magic:
- "%1$s被不为人知的魔法杀死了"
- "%dead_player%被不为人知的魔法杀死了"
death_attack_explosion:
- "%1$s爆炸了"
- "%dead_player%爆炸了"
death_attack_explosion_player:
- "%1$s被%2$s炸死了"
- "%dead_player%被%killer%炸死了"
death_attack_explosion_player_item:
- "%1$s被%2$s用%3$s炸死了"
- "%dead_player%被%killer%用%kill_item%炸死了"
death_attack_fall:
- "%1$s落地过猛"
- "%dead_player%落地过猛"
death_attack_fall_player:
- "%1$s在试图逃离%2$s时落地过猛"
- "%dead_player%在试图逃离%killer%时落地过猛"
death_attack_fallingBlock:
- "%1$s被下落的方块压扁了"
- "%dead_player%被下落的方块压扁了"
death_attack_fallingBlock_player:
- "%1$s在与%2$s战斗时被下落的方块压扁了"
- "%dead_player%在与%killer%战斗时被下落的方块压扁了"
death_attack_fallingStalactite:
- "%1$s被坠落的钟乳石刺穿了"
- "%dead_player%被坠落的钟乳石刺穿了"
death_attack_fallingStalactite_player:
- "%1$s在与%2$s战斗时被坠落的钟乳石刺穿了"
- "%dead_player%在与%killer%战斗时被坠落的钟乳石刺穿了"
death_attack_fireball:
- "%1$s被%2$s用火球烧死了"
- "%dead_player%被%killer%用火球烧死了"
death_attack_fireball_item:
- "%1$s被%2$s用%3$s发射的火球烧死了"
- "%dead_player%被%killer%用%kill_item%发射的火球烧死了"
death_attack_fireworks:
- "%1$s随着一声巨响消失了"
- "%dead_player%随着一声巨响消失了"
death_attack_fireworks_item:
- "%1$s随着%2$s用%3$s发射的烟花发出的巨响消失了"
- "%dead_player%随着%killer%用%kill_item%发射的烟花发出的巨响消失了"
death_attack_fireworks_player:
- "%1$s在与%2$s战斗时随着一声巨响中消失了"
- "%dead_player%在与%killer%战斗时随着一声巨响中消失了"
death_attack_flyIntoWall:
- "%1$s感受到了动能"
- "%dead_player%感受到了动能"
death_attack_flyIntoWall_player:
- "%1$s在试图逃离%2$s时感受到了动能"
- "%dead_player%在试图逃离%killer%时感受到了动能"
death_attack_freeze:
- "%1$s被冻死了"
- "%dead_player%被冻死了"
death_attack_freeze_player:
- "%1$s被%2$s冻死了"
- "%dead_player%被%killer%冻死了"
death_attack_generic:
- "%1$s死了"
- "%dead_player%死了"
death_attack_generic_player:
- "%1$s死于%2$s"
- "%dead_player%死于%killer%"
death_attack_genericKill:
- "%1$s被杀死了"
- "%dead_player%被杀死了"
death_attack_genericKill_player:
- "%1$s在与%2$s战斗时被杀死了"
- "%dead_player%在与%killer%战斗时被杀死了"
death_attack_hotFloor:
- "%1$s发现了地板是熔岩做的"
- "%dead_player%发现了地板是熔岩做的"
death_attack_hotFloor_player:
- "%1$s因%2$s而步入危险之地"
- "%dead_player%因%killer%而步入危险之地"
death_attack_inFire:
- "%1$s浴火焚身"
- "%dead_player%浴火焚身"
death_attack_inFire_player:
- "%1$s在与%2$s战斗时踏入了火中"
- "%dead_player%在与%killer%战斗时踏入了火中"
death_attack_inWall:
- "%1$s在墙里窒息而亡"
- "%dead_player%在墙里窒息而亡"
death_attack_inWall_player:
- "%1$s在与%2$s战斗时在墙里窒息而亡"
- "%dead_player%在与%killer%战斗时在墙里窒息而亡"
death_attack_indirectMagic:
- "%1$s被%2$s使用的魔法杀死了"
- "%dead_player%被%killer%使用的魔法杀死了"
death_attack_indirectMagic_item:
- "%1$s被%2$s用%3$s杀死了"
- "%dead_player%被%killer%用%kill_item%杀死了"
death_attack_lava:
- "%1$s试图在熔岩里游泳"
- "%dead_player%试图在熔岩里游泳"
death_attack_lava_player:
- "%1$s在逃离%2$s时试图在熔岩里游泳"
- "%dead_player%在逃离%killer%时试图在熔岩里游泳"
death_attack_lightningBolt:
- "%1$s被闪电击中"
- "%dead_player%被闪电击中"
death_attack_lightningBolt_player:
- "%1$s在与%2$s战斗时被闪电击中"
- "%dead_player%在与%killer%战斗时被闪电击中"
death_attack_magic:
- "%1$s被魔法杀死了"
- "%dead_player%被魔法杀死了"
death_attack_magic_player:
- "%1$s在试图逃离%2$s时被魔法杀死了"
- "%dead_player%在试图逃离%killer%时被魔法杀死了"
death_attack_message_too_long:
- "死亡文本过长,原文:%s"
death_attack_mob:
- "%1$s被%2$s杀死了"
- "%dead_player%被%killer%杀死了"
death_attack_mob_item:
- "%1$s被%2$s用%3$s杀死了"
- "%dead_player%被%killer%用%kill_item%杀死了"
death_attack_onFire:
- "%1$s被烧死了"
- "%dead_player%被烧死了"
death_attack_onFire_player:
- "%1$s在与%2$s战斗时被烤得酥脆"
- "%dead_player%在与%killer%战斗时被烤得酥脆"
death_attack_onFire_item:
- "%1$s在与持有%3$s的%2$s战斗时被烤得酥脆"
- "%dead_player%在与持有%kill_item%的%killer%战斗时被烤得酥脆"
death_attack_outOfWorld:
- "%1$s掉出了这个世界"
- "%dead_player%掉出了这个世界"
death_attack_outOfWorld_player:
- "%1$s与%2$s不共戴天"
- "%dead_player%与%killer%不共戴天"
death_attack_outsideBorder:
- "%1$s脱离了这个世界"
- "%dead_player%脱离了这个世界"
death_attack_outsideBorder_player:
- "%1$s在与%2$s战斗时脱离了这个世界"
- "%dead_player%在与%killer%战斗时脱离了这个世界"
death_attack_player:
- "%1$s被%2$s杀死了"
- "%dead_player%被%killer%杀死了"
death_attack_player_item:
- "%1$s被%2$s用%3$s杀死了"
- "%dead_player%被%killer%用%kill_item%杀死了"
death_attack_sonic_boom:
- "%1$s被一道音波尖啸抹除了"
- "%dead_player%被一道音波尖啸抹除了"
death_attack_sonic_boom_item:
- "%1$s在试图逃离持有%2$s的%3$s时被一道音波尖啸抹除了"
- "%dead_player%在试图逃离持有%killer%的%kill_item%时被一道音波尖啸抹除了"
death_attack_sonic_boom_player:
- "%1$s在试图逃离%2$s时被一道音波尖啸抹除了"
- "%dead_player%在试图逃离%killer%时被一道音波尖啸抹除了"
death_attack_stalagmite:
- "%1$s被石笋刺穿了"
- "%dead_player%被石笋刺穿了"
death_attack_stalagmite_player:
- "%1$s在与%2$s战斗时被石笋刺穿了"
- "%dead_player%在与%killer%战斗时被石笋刺穿了"
death_attack_starve:
- "%1$s饿死了"
- "%dead_player%饿死了"
death_attack_starve_player:
- "%1$s在与%2$s战斗时饿死了"
- "%dead_player%在与%killer%战斗时饿死了"
death_attack_sting:
- "%1$s被蛰死了"
- "%dead_player%被蛰死了"
death_attack_sting_item:
- "%1$s被%2$s使用%3$s蛰死了"
- "%dead_player%被%killer%使用%kill_item%蛰死了"
death_attack_sting_player:
- "%1$s被%2$s蛰死了"
- "%dead_player%被%killer%蛰死了"
death_attack_sweetBerryBush:
- "%1$s被甜浆果丛刺死了"
- "%dead_player%被甜浆果丛刺死了"
death_attack_sweetBerryBush_player:
- "%1$s在试图逃离%2$s时被甜浆果丛刺死了"
- "%dead_player%在试图逃离%killer%时被甜浆果丛刺死了"
death_attack_thorns:
- "%1$s在试图伤害%2$s时被杀"
- "%dead_player%在试图伤害%killer%时被杀"
death_attack_thorns_item:
- "%1$s在试图伤害%2$s时被%3$s杀死"
- "%dead_player%在试图伤害%killer%时被%kill_item%杀死"
death_attack_thrown:
- "%1$s被%2$s给砸死了"
- "%dead_player%被%killer%给砸死了"
death_attack_thrown_item:
- "%1$s被%2$s用%3$s给砸死了"
- "%dead_player%被%killer%用%kill_item%给砸死了"
death_attack_trident:
- "%1$s被%2$s刺穿了"
- "%dead_player%被%killer%刺穿了"
death_attack_trident_item:
- "%1$s被%2$s用%3$s刺穿了"
- "%dead_player%被%killer%用%kill_item%刺穿了"
death_attack_wither:
- "%1$s凋零了"
- "%dead_player%凋零了"
death_attack_wither_player:
- "%1$s在与%2$s战斗时凋零了"
- "%dead_player%在与%killer%战斗时凋零了"
death_attack_witherSkull:
- "%1$s被%2$s发射的头颅射杀"
- "%dead_player%被%killer%发射的头颅射杀"
death_attack_witherSkull_item:
- "%1$s被%2$s使用%3$s发射的头颅射杀"
- "%dead_player%被%killer%使用%kill_item%发射的头颅射杀"
death_fell_accident_generic:
- "%1$s从高处摔了下来"
- "%dead_player%从高处摔了下来"
death_fell_accident_ladder:
- "%1$s从梯子上摔了下来"
- "%dead_player%从梯子上摔了下来"
death_fell_accident_other_climbable:
- "%1$s在攀爬时摔了下来"
- "%dead_player%在攀爬时摔了下来"
death_fell_accident_scaffolding:
- "%1$s从脚手架上摔了下来"
- "%dead_player%从脚手架上摔了下来"
death_fell_accident_twisting_vines:
- "%1$s从缠怨藤上摔了下来"
- "%dead_player%从缠怨藤上摔了下来"
death_fell_accident_vines:
- "%1$s从藤蔓上摔了下来"
- "%dead_player%从藤蔓上摔了下来"
death_fell_accident_weeping_vines:
- "%1$s从垂泪藤上摔了下来"
- "%dead_player%从垂泪藤上摔了下来"
death_fell_assist:
- "%1$s因为%2$s注定要摔死"
- "%dead_player%因为%killer%注定要摔死"
death_fell_assist_item:
- "%1$s因为%2$s使用了%3$s注定要摔死"
- "%dead_player%因为%killer%使用了%kill_item%注定要摔死"
death_fell_finish:
- "%1$s摔伤得太重并被%2$s完结了生命"
- "%dead_player%摔伤得太重并被%killer%完结了生命"
death_fell_finish_item:
- "%1$s摔伤得太重并被%2$s用%3$s完结了生命"
- "%dead_player%摔伤得太重并被%killer%用%kill_item%完结了生命"
death_fell_killer:
- "%1$s注定要摔死"
- "%dead_player%注定要摔死"
plugin_message:
command_reload: "&a插件重载完毕"
only_player: "&c只有玩家才能使用此命令"
Expand Down

0 comments on commit f60917e

Please sign in to comment.