Skip to content

Commit 572e483

Browse files
committed
follow Rollczi's suggestion -> refactored placeholder registry
1 parent 2e7eff6 commit 572e483

File tree

3 files changed

+71
-56
lines changed

3 files changed

+71
-56
lines changed

buildSrc/src/main/kotlin/eternalcombat-java.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
}
44

55
group = "com.eternalcode"
6-
version = "2.2.1-SNAPSHOT"
6+
version = "2.2.0"
77

88
tasks.compileJava {
99
options.compilerArgs = listOf("-Xlint:deprecation", "-parameters")

eternalcombat-plugin/src/main/java/com/eternalcode/combat/bridge/BridgeService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void init(Server server) {
6969

7070
initialize(
7171
"PlaceholderAPI",
72-
() -> new FightTagPlaceholder(this.config.placeholders, this.fightManager, server, this.plugin).register(),
72+
() -> new FightTagPlaceholder(this.config, this.fightManager, server, this.plugin).register(),
7373
() -> this.logger.warning("PlaceholderAPI not found; skipping placeholders.")
7474
);
7575
}
Lines changed: 69 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.eternalcode.combat.bridge.placeholder;
22

33
import com.eternalcode.combat.config.implementation.PlaceholderSettings;
4+
import com.eternalcode.combat.config.implementation.PluginConfig;
45
import com.eternalcode.combat.fight.FightManager;
56
import com.eternalcode.combat.fight.FightTag;
67
import com.eternalcode.combat.util.DurationUtil;
@@ -16,94 +17,108 @@
1617
public class FightTagPlaceholder extends PlaceholderExpansion {
1718

1819
private static final String IDENTIFIER = "eternalcombat";
20+
1921
private final PlaceholderSettings placeholderSettings;
2022
private final FightManager fightManager;
2123
private final Server server;
2224
private final Plugin plugin;
2325

24-
public FightTagPlaceholder(PlaceholderSettings placeholderSettings, FightManager fightManager, Server server, Plugin plugin) {
25-
this.placeholderSettings = placeholderSettings;
26+
public FightTagPlaceholder(PluginConfig pluginConfig, FightManager fightManager, Server server, Plugin plugin) {
27+
this.placeholderSettings = pluginConfig.placeholders;
2628
this.fightManager = fightManager;
2729
this.server = server;
2830
this.plugin = plugin;
2931
}
3032

3133
@Override
32-
public boolean canRegister() {
33-
return true;
34+
public String onRequest(OfflinePlayer player, String identifier) {
35+
return switch (identifier) {
36+
case "remaining_millis" -> this.handleRemainingMillis(player);
37+
case "remaining_seconds" -> this.handleRemainingSeconds(player);
38+
case "opponent" -> this.handleOpponent(player);
39+
case "opponent_health" -> this.handleOpponentHealth(player);
40+
case "isInCombat" -> this.handleIsInCombat(player);
41+
case "isInCombat_formatted" -> this.handleIsInCombatFormatted(player);
42+
default -> "";
43+
};
3444
}
3545

36-
@Override
37-
public @NotNull String getIdentifier() {
38-
return IDENTIFIER;
46+
private String handleRemainingMillis(OfflinePlayer player) {
47+
return this.getFightTag(player)
48+
.map(tag -> DurationParser.TIME_UNITS.format(tag.getRemainingDuration()))
49+
.orElse("");
3950
}
4051

41-
@Override
42-
public @NotNull String getAuthor() {
43-
return this.plugin.getDescription().getAuthors().get(0);
52+
private String handleRemainingSeconds(OfflinePlayer player) {
53+
return this.getFightTag(player)
54+
.map(tag -> DurationUtil.format(tag.getRemainingDuration()))
55+
.orElse("");
4456
}
4557

46-
@Override
47-
public @NotNull String getVersion() {
48-
return this.plugin.getDescription().getVersion();
58+
private String handleOpponent(OfflinePlayer player) {
59+
return this.getTagger(player)
60+
.map(Player::getName)
61+
.orElse("");
4962
}
5063

51-
@Override
52-
public String onRequest(OfflinePlayer player, String identifier) {
53-
if (identifier.equals("remaining_seconds") || identifier.equals("remaining_millis")) {
54-
return this.getFightTag(player)
55-
.map(fightTagInter -> identifier.equals("remaining_millis")
56-
? DurationParser.TIME_UNITS.format(fightTagInter.getRemainingDuration())
57-
: DurationUtil.format(fightTagInter.getRemainingDuration()))
58-
.orElse("");
59-
}
60-
61-
if (identifier.equals("opponent")) {
62-
return this.getTagger(player)
63-
.map(tagger -> tagger.getName())
64-
.orElse("");
65-
}
66-
67-
if (identifier.equals("opponent_health")) {
68-
return this.getTagger(player)
69-
.map(tagger -> String.format("%.2f", tagger.getHealth()))
70-
.orElse("");
71-
}
72-
73-
if (identifier.equals("isInCombat") || identifier.equals("isInCombat_formatted")) {
74-
Player onlinePlayer = player.getPlayer();
75-
boolean inCombat = onlinePlayer != null && this.fightManager.isInCombat(onlinePlayer.getUniqueId());
64+
private String handleOpponentHealth(OfflinePlayer player) {
65+
return this.getTagger(player)
66+
.map(tagger -> String.format("%.2f", tagger.getHealth()))
67+
.orElse("");
68+
}
7669

77-
if (identifier.equals("isInCombat")) {
78-
return String.valueOf(inCombat);
79-
}
70+
private String handleIsInCombat(OfflinePlayer player) {
71+
return String.valueOf(this.isPlayerInCombat(player));
72+
}
8073

81-
return inCombat
82-
? this.placeholderSettings.isInCombatFormattedTrue
83-
: this.placeholderSettings.isInCombatFormattedFalse;
84-
}
74+
private String handleIsInCombatFormatted(OfflinePlayer player) {
75+
return this.isPlayerInCombat(player)
76+
? this.placeholderSettings.isInCombatFormattedTrue
77+
: this.placeholderSettings.isInCombatFormattedFalse;
78+
}
8579

86-
return null;
80+
private boolean isPlayerInCombat(OfflinePlayer player) {
81+
Player onlinePlayer = player.getPlayer();
82+
return onlinePlayer != null && this.fightManager.isInCombat(onlinePlayer.getUniqueId());
8783
}
8884

8985
private @NotNull Optional<Player> getTagger(OfflinePlayer player) {
9086
return this.getFightTag(player)
91-
.map(fightTagInter -> fightTagInter.getTagger())
92-
.map(taggerId -> this.server.getPlayer(taggerId));
87+
.map(FightTag::getTagger)
88+
.map(this.server::getPlayer);
9389
}
9490

9591
private Optional<FightTag> getFightTag(OfflinePlayer player) {
9692
Player onlinePlayer = player.getPlayer();
9793

98-
if (onlinePlayer != null) {
99-
if (!this.fightManager.isInCombat(onlinePlayer.getUniqueId())) {
100-
return Optional.empty();
101-
}
94+
if (onlinePlayer == null) {
95+
return Optional.empty();
96+
}
10297

103-
return Optional.of(this.fightManager.getTag(onlinePlayer.getUniqueId()));
98+
if (!this.fightManager.isInCombat(onlinePlayer.getUniqueId())) {
99+
return Optional.empty();
104100
}
105101

106-
return Optional.empty();
102+
return Optional.of(this.fightManager.getTag(onlinePlayer.getUniqueId()));
103+
}
104+
105+
@Override
106+
public boolean canRegister() {
107+
return true;
108+
}
109+
110+
@Override
111+
public @NotNull String getIdentifier() {
112+
return IDENTIFIER;
113+
}
114+
115+
@Override
116+
public @NotNull String getAuthor() {
117+
return this.plugin.getDescription().getAuthors().get(0);
107118
}
108119

120+
@Override
121+
public @NotNull String getVersion() {
122+
return this.plugin.getDescription().getVersion();
123+
}
109124
}

0 commit comments

Comments
 (0)