Skip to content

Commit 11ddfa3

Browse files
committed
Commit
1 parent 4adb466 commit 11ddfa3

9 files changed

Lines changed: 163 additions & 2 deletions

File tree

CombatPlus.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@
2828
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.15-SNAPSHOT" level="project" />
2929
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.25" level="project" />
3030
<orderEntry type="library" name="Maven: org.bstats:bstats-bukkit-lite:1.7" level="project" />
31+
<orderEntry type="library" scope="PROVIDED" name="Maven: me.clip:placeholderapi:2.10.5" level="project" />
3132
</component>
3233
</module>

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@
7474
<id>CodeMC</id>
7575
<url>https://repo.codemc.org/repository/maven-public</url>
7676
</repository>
77+
<repository>
78+
<id>placeholderapi</id>
79+
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
80+
</repository>
7781
</repositories>
7882

7983
<dependencies>
@@ -89,5 +93,11 @@
8993
<version>1.7</version>
9094
<scope>compile</scope>
9195
</dependency>
96+
<dependency>
97+
<groupId>me.clip</groupId>
98+
<artifactId>placeholderapi</artifactId>
99+
<version>2.10.5</version>
100+
<scope>provided</scope>
101+
</dependency>
92102
</dependencies>
93103
</project>

src/main/java/me/nik/combatplus/CombatPlus.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import me.nik.combatplus.commands.CommandManager;
44
import me.nik.combatplus.files.Config;
55
import me.nik.combatplus.files.Lang;
6+
import me.nik.combatplus.handlers.PapiHook;
67
import me.nik.combatplus.handlers.UpdateChecker;
78
import me.nik.combatplus.listeners.AttributesSet;
89
import me.nik.combatplus.listeners.BowBoost;
@@ -24,6 +25,7 @@
2425
import me.nik.combatplus.listeners.fixes.Speed;
2526
import me.nik.combatplus.utils.CustomRecipes;
2627
import me.nik.combatplus.utils.Messenger;
28+
import me.nik.combatplus.utils.MiscUtils;
2729
import me.nik.combatplus.utils.ResetStats;
2830
import me.nik.combatplus.utils.SetAttackSpeed;
2931
import me.nik.combatplus.utils.SetCustomHealth;
@@ -54,7 +56,7 @@ public void onEnable() {
5456
checkSupported();
5557

5658
//Load Commands
57-
getCommand("combatplus").setExecutor(new CommandManager(this));
59+
this.getCommand("combatplus").setExecutor(new CommandManager(this));
5860

5961
//Load Listeners
6062
initialize();
@@ -68,6 +70,11 @@ public void onEnable() {
6870
//Load bStats
6971
int pluginID = 6982;
7072
MetricsLite metricsLite = new MetricsLite(this, pluginID);
73+
74+
//Hook PlaceholderAPI
75+
if (MiscUtils.isPlaceholderApiEnabled()) {
76+
new PapiHook(this).register();
77+
}
7178
}
7279
@Override
7380
public void onDisable() {
@@ -81,7 +88,7 @@ public void onDisable() {
8188
Lang.save();
8289

8390
//Unload Instances
84-
getCommand("combatplus").setExecutor(null);
91+
this.getCommand("combatplus").setExecutor(null);
8592

8693
//Done
8794
consoleMessage(Messenger.message("console.disabled"));
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package me.nik.combatplus.handlers;
2+
3+
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
4+
import me.nik.combatplus.CombatPlus;
5+
import me.nik.combatplus.listeners.EnchantedGoldenApple;
6+
import me.nik.combatplus.listeners.Enderpearl;
7+
import me.nik.combatplus.listeners.GoldenApple;
8+
import org.bukkit.entity.Player;
9+
10+
public class PapiHook extends PlaceholderExpansion {
11+
12+
private final CombatPlus plugin;
13+
14+
public PapiHook(CombatPlus plugin) {
15+
this.plugin = plugin;
16+
}
17+
18+
@Override
19+
public boolean persist() {
20+
return true;
21+
}
22+
23+
@Override
24+
public boolean canRegister() {
25+
return true;
26+
}
27+
28+
@Override
29+
public String getIdentifier() {
30+
return "combatplus";
31+
}
32+
33+
@Override
34+
public String getAuthor() {
35+
return plugin.getDescription().getAuthors().toString();
36+
}
37+
38+
@Override
39+
public String getVersion() {
40+
return plugin.getDescription().getVersion();
41+
}
42+
43+
@Override
44+
public String onPlaceholderRequest(Player player, String identifier) {
45+
46+
if (player == null) {
47+
return "";
48+
}
49+
50+
//Golden Apple Cooldown
51+
if (identifier.equalsIgnoreCase("goldenapple")) {
52+
return GoldenApple.PAPICOOLDOWN;
53+
}
54+
55+
//Enchanted Golden Apple Cooldown
56+
if (identifier.equalsIgnoreCase("enchantedgoldenapple")) {
57+
return EnchantedGoldenApple.PAPICOOLDOWN;
58+
}
59+
60+
//Enderpearl Cooldown
61+
if (identifier.equalsIgnoreCase("enderpearl")) {
62+
return Enderpearl.PAPICOOLDOWN;
63+
}
64+
return null;
65+
}
66+
}

src/main/java/me/nik/combatplus/listeners/EnchantedGoldenApple.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.nik.combatplus.files.Config;
55
import me.nik.combatplus.files.Lang;
66
import me.nik.combatplus.utils.Messenger;
7+
import me.nik.combatplus.utils.MiscUtils;
78
import me.nik.combatplus.utils.WorldUtils;
89
import net.md_5.bungee.api.ChatMessageType;
910
import net.md_5.bungee.api.chat.TextComponent;
@@ -25,6 +26,7 @@ public class EnchantedGoldenApple implements Listener {
2526

2627
private final HashMap<UUID, Long> cooldown = new HashMap<>();
2728
private final int cdtime = Config.get().getInt("golden_apple_cooldown.enchanted_golden_apple.cooldown");
29+
public static String PAPICOOLDOWN = "Ready";
2830

2931
public EnchantedGoldenApple(CombatPlus plugin) {
3032
this.plugin = plugin;
@@ -37,6 +39,7 @@ private void taskRun(UUID uuid) {
3739
@Override
3840
public void run() {
3941
cooldown.remove(uuid);
42+
PAPICOOLDOWN = "Ready";
4043
}
4144
}.runTaskLaterAsynchronously(plugin, cdtime * 20);
4245
}
@@ -57,6 +60,9 @@ public void onEatEnchantedGoldenApple(PlayerItemConsumeEvent e) {
5760
player.sendMessage(Messenger.message("enchanted_golden_apple_cooldown").replaceAll("%seconds%", String.valueOf(secondsleft)));
5861
} else {
5962
taskRun(p);
63+
if (MiscUtils.isPlaceholderApiEnabled()) {
64+
setupPlaceholder(p);
65+
}
6066
Messenger.debug(player, "&3Enchanted Golden Apple Cooldown &f&l>> &6Added to cooldown: &atrue");
6167
if (Config.get().getBoolean("golden_apple_cooldown.enchanted_golden_apple.actionbar")) {
6268
new BukkitRunnable() {
@@ -76,4 +82,20 @@ public void run() {
7682
}
7783
}
7884
}
85+
86+
private void setupPlaceholder(UUID p) {
87+
88+
new BukkitRunnable() {
89+
90+
@Override
91+
public void run() {
92+
if (cooldown.containsKey(p)) {
93+
long secondsleft = ((cooldown.get(p) / 1000) + cdtime) - (System.currentTimeMillis() / 1000);
94+
PAPICOOLDOWN = String.valueOf(secondsleft);
95+
} else {
96+
cancel();
97+
}
98+
}
99+
}.runTaskTimerAsynchronously(plugin, 0, 20);
100+
}
79101
}

src/main/java/me/nik/combatplus/listeners/Enderpearl.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.nik.combatplus.files.Config;
55
import me.nik.combatplus.files.Lang;
66
import me.nik.combatplus.utils.Messenger;
7+
import me.nik.combatplus.utils.MiscUtils;
78
import me.nik.combatplus.utils.WorldUtils;
89
import net.md_5.bungee.api.ChatMessageType;
910
import net.md_5.bungee.api.chat.TextComponent;
@@ -26,6 +27,7 @@ public class Enderpearl implements Listener {
2627

2728
private final HashMap<UUID, Long> cooldown = new HashMap<>();
2829
private final int cdtime = Config.get().getInt("enderpearl_cooldown.cooldown");
30+
public static String PAPICOOLDOWN = "Ready";
2931

3032
public Enderpearl(CombatPlus plugin) {
3133
this.plugin = plugin;
@@ -38,6 +40,7 @@ private void taskRun(UUID uuid) {
3840
@Override
3941
public void run() {
4042
cooldown.remove(uuid);
43+
PAPICOOLDOWN = "Ready";
4144
}
4245
}.runTaskLaterAsynchronously(plugin, cdtime * 20);
4346
}
@@ -63,6 +66,9 @@ public void onInteract(PlayerInteractEvent e) {
6366
player.sendMessage(Messenger.message("enderpearl_cooldown").replaceAll("%seconds%", String.valueOf(secondsLeft)));
6467
} else {
6568
taskRun(p);
69+
if (MiscUtils.isPlaceholderApiEnabled()) {
70+
setupPlaceholder(p);
71+
}
6672
Messenger.debug(player, "&3Ender Pearl Cooldown &f&l>> &6Added to cooldown: &atrue");
6773
if (Config.get().getBoolean("enderpearl_cooldown.actionbar")) {
6874
new BukkitRunnable() {
@@ -83,4 +89,20 @@ public void run() {
8389
}
8490
}
8591
}
92+
93+
private void setupPlaceholder(UUID p) {
94+
95+
new BukkitRunnable() {
96+
97+
@Override
98+
public void run() {
99+
if (cooldown.containsKey(p)) {
100+
long secondsleft = ((cooldown.get(p) / 1000) + cdtime) - (System.currentTimeMillis() / 1000);
101+
PAPICOOLDOWN = String.valueOf(secondsleft);
102+
} else {
103+
cancel();
104+
}
105+
}
106+
}.runTaskTimerAsynchronously(plugin, 0, 20);
107+
}
86108
}

src/main/java/me/nik/combatplus/listeners/GoldenApple.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.nik.combatplus.files.Config;
55
import me.nik.combatplus.files.Lang;
66
import me.nik.combatplus.utils.Messenger;
7+
import me.nik.combatplus.utils.MiscUtils;
78
import me.nik.combatplus.utils.WorldUtils;
89
import net.md_5.bungee.api.ChatMessageType;
910
import net.md_5.bungee.api.chat.TextComponent;
@@ -25,6 +26,7 @@ public class GoldenApple implements Listener {
2526

2627
private final HashMap<UUID, Long> cooldown = new HashMap<>();
2728
private final int cdtime = Config.get().getInt("golden_apple_cooldown.golden_apple.cooldown");
29+
public static String PAPICOOLDOWN = "Ready";
2830

2931
public GoldenApple(CombatPlus plugin) {
3032
this.plugin = plugin;
@@ -37,6 +39,7 @@ private void taskRun(UUID uuid) {
3739
@Override
3840
public void run() {
3941
cooldown.remove(uuid);
42+
PAPICOOLDOWN = "Ready";
4043
}
4144
}.runTaskLaterAsynchronously(plugin, cdtime * 20);
4245
}
@@ -57,6 +60,9 @@ public void onEatGoldenApple(PlayerItemConsumeEvent e) {
5760
player.sendMessage(Messenger.message("golden_apple_cooldown").replaceAll("%seconds%", String.valueOf(secondsleft)));
5861
} else {
5962
taskRun(p);
63+
if (MiscUtils.isPlaceholderApiEnabled()) {
64+
setupPlaceholder(p);
65+
}
6066
Messenger.debug(player, "&3Golden Apple Cooldown &f&l>> &6Added to cooldown: &atrue");
6167
if (Config.get().getBoolean("golden_apple_cooldown.golden_apple.actionbar")) {
6268
new BukkitRunnable() {
@@ -76,4 +82,20 @@ public void run() {
7682
}
7783
}
7884
}
85+
86+
private void setupPlaceholder(UUID p) {
87+
88+
new BukkitRunnable() {
89+
90+
@Override
91+
public void run() {
92+
if (cooldown.containsKey(p)) {
93+
long secondsleft = ((cooldown.get(p) / 1000) + cdtime) - (System.currentTimeMillis() / 1000);
94+
PAPICOOLDOWN = String.valueOf(secondsleft);
95+
} else {
96+
cancel();
97+
}
98+
}
99+
}.runTaskTimerAsynchronously(plugin, 0, 20);
100+
}
79101
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package me.nik.combatplus.utils;
2+
3+
import org.bukkit.Bukkit;
4+
5+
public class MiscUtils {
6+
7+
public static boolean isPlaceholderApiEnabled() {
8+
return Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null;
9+
}
10+
}

src/main/resources/plugin.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ prefix: CombatPlus
77
load: POSTWORLD
88
description: The all in one Combat System!
99
website: https://discord.gg/m7j2Y9H
10+
softdepend: [PlaceholderAPI]
1011
commands:
1112
combatplus:
1213
description: The all in one Combat System!

0 commit comments

Comments
 (0)