Skip to content

Commit a480707

Browse files
committed
optimize: 移除死亡同步中使用的LegacyAPI,尽量使用现代接口 [2.1.4]
1 parent c4ca0e6 commit a480707

File tree

2 files changed

+37
-14
lines changed

2 files changed

+37
-14
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ plugins {
44
}
55

66
group = 'com.springwater.easybot'
7-
version = '2.1.3'
7+
version = '2.1.4'
88

99
repositories {
1010
mavenCentral()
@@ -68,11 +68,11 @@ dependencies {
6868
compileOnly("me.clip:placeholderapi:2.11.6")
6969
compileOnly("com.github.MilkBowl:VaultAPI:1.7")
7070
compileOnly("net.kyori:adventure-api:4.17.0")
71-
compileOnly("net.kyori:adventure-text-serializer-legacy:4.17.0")
7271
compileOnly("org.geysermc.api:base-api:1.0.1")
7372
compileOnly("org.geysermc.floodgate:api:2.1.1-SNAPSHOT")
7473
compileOnly("org.eclipse.jetty.websocket:websocket-api:9.4.58.v20250814")
7574

75+
implementation("net.kyori:adventure-text-serializer-legacy:4.17.0")
7676
implementation("net.kyori:adventure-text-serializer-plain:4.17.0")
7777
implementation("org.glavo:rcon-java:2.0.2")
7878

src/main/java/com/springwater/easybot/event/PlayerDeathSyncEvents.java

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.springwater.easybot.bridge.packet.PlayerInfoWithRaw;
55
import com.springwater.easybot.utils.BridgeUtils;
66
import com.springwater.easybot.utils.FakePlayerUtils;
7+
import net.kyori.adventure.text.Component;
8+
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
79
import org.bukkit.block.Block;
810
import org.bukkit.entity.Arrow;
911
import org.bukkit.entity.Entity;
@@ -16,42 +18,63 @@
1618
import org.bukkit.event.entity.EntityDamageEvent;
1719
import org.bukkit.event.entity.PlayerDeathEvent;
1820

21+
import java.lang.reflect.Method;
22+
1923
public class PlayerDeathSyncEvents implements Listener {
24+
25+
private final boolean hasModernMessageApi;
26+
27+
public PlayerDeathSyncEvents(){
28+
boolean modernMessageApi = false;
29+
try {
30+
PlayerDeathEvent.class.getMethod("deathMessage");
31+
modernMessageApi = true;
32+
} catch (NoSuchMethodException | NoClassDefFoundError ignored) {
33+
}
34+
this.hasModernMessageApi = modernMessageApi;
35+
}
36+
2037
public String getKiller(Player player) {
2138
EntityDamageEvent lastDamageCause = player.getLastDamageCause();
2239
if (lastDamageCause instanceof EntityDamageByEntityEvent) {
2340
Entity damager = ((EntityDamageByEntityEvent) lastDamageCause).getDamager();
24-
if(damager instanceof Arrow){
41+
if (damager instanceof Arrow) {
2542
Arrow arrow = (Arrow) damager;
26-
if(arrow.getShooter() instanceof Entity){
43+
if (arrow.getShooter() instanceof Entity) {
2744
return ((Entity) arrow.getShooter()).getName();
2845
}
2946
return "箭";
3047
}
48+
//noinspection ConstantValue
3149
return damager != null ? damager.getName() : "一股神秘的力量";
3250
} else if (lastDamageCause instanceof EntityDamageByBlockEvent) {
3351
Block damager = ((EntityDamageByBlockEvent) lastDamageCause).getDamager();
34-
return damager != null ? damager.getState().getData().getItemType().name() : "一股神秘的力量";
52+
return damager != null ? damager.getState().getType().name() : "一股神秘的力量";
3553
} else {
3654
return "一股神秘的力量";
3755
}
3856
}
3957

4058
@EventHandler(priority = EventPriority.LOWEST)
4159
public void onPlayerDeath(PlayerDeathEvent event) {
42-
if(Easybot.instance.getConfig().getBoolean("skip_options.skip_death")) return;
43-
if(FakePlayerUtils.isFake(event.getPlayer())) return;
60+
if (Easybot.instance.getConfig().getBoolean("skip_options.skip_death")) return;
61+
if (FakePlayerUtils.isFake(event.getEntity())) return;
4462
PlayerInfoWithRaw playerInfo = BridgeUtils.buildPlayerInfoFull(event.getEntity());
45-
String deathMessage = event.getDeathMessage();
46-
if(deathMessage == null){
63+
String deathMessage;
64+
65+
if(hasModernMessageApi) {
66+
Component component = event.deathMessage();
67+
deathMessage = LegacyComponentSerializer.legacySection().serializeOrNull(component);
68+
}else{
69+
//noinspection deprecation
70+
deathMessage = event.getDeathMessage();
71+
}
72+
73+
if (deathMessage == null) {
4774
deathMessage = event.getEntity().getName() + " died";
4875
}
4976
final String message = deathMessage;
5077
String killer = getKiller(event.getEntity());
51-
new Thread(() -> {
52-
Easybot
53-
.getClient()
54-
.syncDeathMessage(playerInfo, message, killer);
55-
}, "EasyBotThread-SyncPlayerDeath").start();
78+
new Thread(() -> Easybot.getClient().syncDeathMessage(playerInfo, message, killer), "EasyBotThread-SyncPlayerDeath").start();
5679
}
5780
}

0 commit comments

Comments
 (0)