Skip to content

Commit 8f23fe5

Browse files
author
RednedEpic
committed
Add PlaceholderAPI support (Addresses #106)
1 parent 33a4ce0 commit 8f23fe5

File tree

4 files changed

+116
-1
lines changed

4 files changed

+116
-1
lines changed

pom.xml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>mc.alk</groupId>
55
<artifactId>BattleArena</artifactId>
66
<packaging>jar</packaging>
7-
<version>3.9.13.2</version>
7+
<version>3.9.13.3</version>
88
<name>BattleArena</name>
99
<url>https://github.com/BattlePlugins/BattleArena</url>
1010
<properties>
@@ -53,6 +53,10 @@
5353
<id>codemc-repo</id>
5454
<url>https://repo.codemc.org/repository/maven-public</url>
5555
</repository>
56+
<repository>
57+
<id>placeholderapi-repo</id>
58+
<url>http://repo.extendedclip.com/content/repositories/placeholderapi/</url>
59+
</repository>
5660
</repositories>
5761
<dependencies>
5862
<!--
@@ -184,6 +188,12 @@
184188
<version>1.14.1</version>
185189
<scope>provided</scope>
186190
</dependency>
191+
<dependency>
192+
<groupId>me.clip</groupId>
193+
<artifactId>placeholderapi</artifactId>
194+
<version>2.9.2</version>
195+
<scope>provided</scope>
196+
</dependency>
187197
<dependency>
188198
<groupId>com.sk89q</groupId>
189199
<artifactId>worldedit</artifactId>

src/java/mc/alk/arena/competition/match/Match.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,6 +1621,10 @@ public MatchResult getResult() {
16211621
return matchResult;
16221622
}
16231623

1624+
public Countdown getMatchCountdown() {
1625+
return matchCountdown;
1626+
}
1627+
16241628
public Set<ArenaTeam> getVictors() {
16251629
return matchResult.getVictors();
16261630
}

src/java/mc/alk/arena/listeners/BAPluginListener.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import mc.alk.arena.controllers.plugins.WorldGuardController;
1717
import mc.alk.arena.objects.messaging.AnnouncementOptions;
1818
import mc.alk.arena.objects.messaging.plugins.HerochatPlugin;
19+
import mc.alk.arena.plugins.BAPlaceholderExtension;
1920
import mc.alk.arena.plugins.combattag.TagsOff;
2021
import mc.alk.arena.plugins.combattag.TagsOn;
2122
import mc.alk.arena.util.Log;
@@ -41,6 +42,7 @@ public class BAPluginListener implements Listener {
4142

4243
@EventHandler
4344
public void onPluginEnable(PluginEnableEvent event) {
45+
// TODO: Clean this up
4446
if (event.getPlugin().getName().equalsIgnoreCase("BattleTracker")) {
4547
loadBattleTracker();
4648
} else if (event.getPlugin().getName().equalsIgnoreCase("CombatTag")) {
@@ -67,6 +69,8 @@ public void onPluginEnable(PluginEnableEvent event) {
6769
loadMultiverseCore();
6870
} else if (event.getPlugin().getName().equalsIgnoreCase("Multiverse-Inventories")) {
6971
loadMultiverseInventory();
72+
} else if (event.getPlugin().getName().equalsIgnoreCase("PlaceholderAPI")) {
73+
loadPlaceholderAPI();
7074
} else if (event.getPlugin().getName().equalsIgnoreCase("PylamoRestorationSystem")) {
7175
loadPylamoRestoration();
7276
} else if (event.getPlugin().getName().equalsIgnoreCase("TagAPI")) {
@@ -98,6 +102,7 @@ public void loadAll() {
98102
loadMultiInv();
99103
loadMultiverseCore();
100104
loadMultiverseInventory();
105+
loadPlaceholderAPI();
101106
loadPylamoRestoration();
102107
loadTagAPI();
103108
loadWorldEdit();
@@ -249,6 +254,14 @@ public void loadMultiverseInventory() {
249254
}
250255
}
251256

257+
public void loadPlaceholderAPI() {
258+
Plugin plugin = Bukkit.getPluginManager().getPlugin("PlaceholderAPI");
259+
if (plugin != null) {
260+
new BAPlaceholderExtension().register();
261+
Log.info(BattleArena.getPluginName() + " PlaceholderAPI detected. Implementing placeholder hook.");
262+
}
263+
}
264+
252265
public void loadPylamoRestoration() {
253266
if (!PylamoController.enabled()) {
254267
Plugin plugin = Bukkit.getPluginManager().getPlugin("PylamoRestorationSystem");
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package mc.alk.arena.plugins;
2+
3+
import mc.alk.arena.BattleArena;
4+
import mc.alk.arena.competition.Competition;
5+
import mc.alk.arena.competition.match.Match;
6+
import mc.alk.arena.objects.ArenaPlayer;
7+
import mc.alk.arena.util.MessageUtil;
8+
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
9+
import org.bukkit.entity.Player;
10+
11+
/**
12+
* Placeholder expansion for PlaceholderAPI
13+
*
14+
* @author Redned
15+
*/
16+
public class BAPlaceholderExtension extends PlaceholderExpansion {
17+
18+
@Override
19+
public String getIdentifier() {
20+
return "BA";
21+
}
22+
23+
@Override
24+
public String getAuthor() {
25+
return "BattlePlugins";
26+
}
27+
28+
@Override
29+
public String getVersion() {
30+
return BattleArena.getSelf().getDescription().getVersion();
31+
}
32+
33+
@Override
34+
public String onPlaceholderRequest(Player player, String params) {
35+
if (player == null || !player.isOnline())
36+
return "";
37+
38+
ArenaPlayer arenaPlayer = BattleArena.toArenaPlayer(player);
39+
if (arenaPlayer == null)
40+
return "";
41+
42+
if (arenaPlayer.getCompetition() == null)
43+
return "";
44+
45+
Competition competition = arenaPlayer.getCompetition();
46+
switch (params) {
47+
case "active_game":
48+
return competition.getParams().getName();
49+
case "active_game_prefix":
50+
return competition.getParams().getPrefix();
51+
case "active_game_players":
52+
return String.valueOf(competition.getPlayers().size());
53+
case "active_game_teams":
54+
return String.valueOf(competition.getTeams().size());
55+
case "active_game_team":
56+
return MessageUtil.decolorChat(competition.getTeam(arenaPlayer).getScoreboardDisplayName());
57+
case "active_game_team_color":
58+
return competition.getTeam(arenaPlayer).getTeamChatColor().toString();
59+
case "active_game_lives_left":
60+
return String.valueOf(arenaPlayer.getMetaData().getLivesLeft());
61+
case "active_game_time_left":
62+
if (arenaPlayer.getCompetition() instanceof Match) {
63+
Match match = (Match) competition;
64+
return String.valueOf((int) (match.getMatchCountdown().getTimeRemaining() / 1000));
65+
}
66+
break;
67+
case "active_game_players_left":
68+
if (arenaPlayer.getCompetition() instanceof Match) {
69+
Match match = (Match) competition;
70+
return String.valueOf(match.getAlivePlayers().size());
71+
}
72+
break;
73+
case "active_game_teams_left":
74+
if (arenaPlayer.getCompetition() instanceof Match) {
75+
Match match = (Match) arenaPlayer.getCompetition();
76+
return String.valueOf(match.getAliveTeams().size());
77+
}
78+
break;
79+
case "active_game_arena":
80+
if (arenaPlayer.getCompetition() instanceof Match) {
81+
Match match = (Match) arenaPlayer.getCompetition();
82+
return match.getArena().getName();
83+
}
84+
break;
85+
}
86+
return null;
87+
}
88+
}

0 commit comments

Comments
 (0)