Skip to content

Commit 2240ffa

Browse files
committed
Working on getting placeholderAPI support
1 parent 3900390 commit 2240ffa

File tree

12 files changed

+139
-93
lines changed

12 files changed

+139
-93
lines changed

pom.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
</build>
5555

5656
<repositories>
57+
<repository>
58+
<id>placeholderapi</id>
59+
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
60+
</repository>
5761
<repository>
5862
<id>papermc-repo</id>
5963
<url>https://repo.papermc.io/repository/maven-public/</url>
@@ -62,6 +66,7 @@
6266
<id>sonatype</id>
6367
<url>https://oss.sonatype.org/content/groups/public/</url>
6468
</repository>
69+
6570
</repositories>
6671

6772
<dependencies>
@@ -71,5 +76,11 @@
7176
<version>1.19.2-R0.1-SNAPSHOT</version>
7277
<scope>provided</scope>
7378
</dependency>
79+
<dependency>
80+
<groupId>me.clip</groupId>
81+
<artifactId>placeholderapi</artifactId>
82+
<version>2.11.3</version>
83+
<scope>provided</scope>
84+
</dependency>
7485
</dependencies>
7586
</project>

src/main/java/adhdmc/simplepms/SimplePMs.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
import adhdmc.simplepms.commands.ReloadCommand;
55
import adhdmc.simplepms.commands.ReplyCommand;
66
import adhdmc.simplepms.commands.SocialSpyCommand;
7-
import adhdmc.simplepms.config.Defaults;
87
import adhdmc.simplepms.listeners.LoginListener;
9-
import adhdmc.simplepms.utils.SPMMessage;
8+
import adhdmc.simplepms.utils.Message;
109
import net.kyori.adventure.text.minimessage.MiniMessage;
1110
import org.bukkit.plugin.Plugin;
1211
import org.bukkit.plugin.java.JavaPlugin;
@@ -17,15 +16,20 @@ public final class SimplePMs extends JavaPlugin {
1716

1817
private static Plugin instance;
1918
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
19+
private boolean papiEnabled = false;
2020

2121
@Override
2222
public void onEnable() {
2323
instance = this;
2424
registerCommands();
2525
this.getServer().getPluginManager().registerEvents(new LoginListener(), this);
26-
Defaults.setDefaults();
26+
if (this.getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
27+
papiEnabled = true;
28+
} else {
29+
this.getLogger().info("You do not have PlaceholderAPI loaded on your server. Any PlaceholderAPI placeholders used in this plugin's messages, will not work.");
30+
}
2731
this.saveDefaultConfig();
28-
SPMMessage.reloadMessages();
32+
Message.reloadMessages();
2933
}
3034

3135
public static MiniMessage getMiniMessage() {

src/main/java/adhdmc/simplepms/commands/PrivateMessage.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import adhdmc.simplepms.SimplePMs;
44
import adhdmc.simplepms.utils.SPMKey;
5-
import adhdmc.simplepms.utils.SPMMessage;
5+
import adhdmc.simplepms.utils.Message;
66
import adhdmc.simplepms.utils.SPMPerm;
77
import adhdmc.simplepms.utils.Util;
88
import net.kyori.adventure.text.Component;
@@ -34,31 +34,31 @@ public class PrivateMessage implements CommandExecutor, TabCompleter {
3434
@Override
3535
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
3636
if (args.length == 0) {
37-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_NO_RECIPIENT_PROVIDED.getMessage(),
38-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
37+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_NO_RECIPIENT_PROVIDED.getMessage(),
38+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
3939
return true;
4040
}
4141
if (args.length == 1) {
42-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_BLANK_MESSAGE.getMessage(),
43-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
42+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_BLANK_MESSAGE.getMessage(),
43+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
4444
return true;
4545
}
4646
if (!sender.hasPermission(SPMPerm.SEND_MESSAGE.getPerm())) {
47-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_NO_PERMISSION.getMessage(),
48-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
47+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_NO_PERMISSION.getMessage(),
48+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
4949
return false;
5050
}
5151
Player recipient = Bukkit.getPlayer(args[0]);
5252
if (recipient == null) {
53-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_RECIPIENT_OFFLINE.getMessage(),
54-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage()),
53+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_RECIPIENT_OFFLINE.getMessage(),
54+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage()),
5555
Placeholder.parsed("receiver", args[0])));
5656
return true;
5757
}
5858
// TODO: Implement ignore-list checker.
5959
if (false) {
60-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_RECIPIENT_BLOCKED.getMessage(),
61-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
60+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_RECIPIENT_BLOCKED.getMessage(),
61+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
6262
return true;
6363
}
6464
Component senderName;
@@ -71,23 +71,23 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
7171
senderSpyName = miniMessage.deserialize("<gray>" + player.getName());
7272
} else {
7373
recipient.getPersistentDataContainer().set(lastMessaged, PersistentDataType.STRING, console);
74-
senderName = miniMessage.deserialize(SPMMessage.CONSOLE_FORMAT.getMessage());
75-
senderSpyName = miniMessage.deserialize(SPMMessage.CONSOLE_FORMAT_SPY.getMessage());
74+
senderName = miniMessage.deserialize(Message.CONSOLE_FORMAT.getMessage());
75+
senderSpyName = miniMessage.deserialize(Message.CONSOLE_FORMAT_SPY.getMessage());
7676
}
7777
String message = String.join(" ", Arrays.stream(args).skip(1).collect(Collectors.joining(" ")));
7878
// TODO: Implement message event in place of this.
7979
for (Player spy : spyingPlayers) {
8080
if (!spy.isOnline()) continue;
8181
if (spy.equals(sender) || spy.equals(recipient)) continue;
82-
spy.sendMessage(miniMessage.deserialize(SPMMessage.SPY_FORMAT.getMessage(),
82+
spy.sendMessage(miniMessage.deserialize(Message.SPY_FORMAT.getMessage(),
8383
Placeholder.component("sender", senderSpyName),
8484
Placeholder.component("receiver", recieverSpyName),
8585
Placeholder.unparsed("message", message)));
8686
}
87-
sender.sendMessage(miniMessage.deserialize(SPMMessage.SENDING_FORMAT.getMessage(),
87+
sender.sendMessage(miniMessage.deserialize(Message.SENDING_FORMAT.getMessage(),
8888
Placeholder.component("receiver", recipient.displayName()),
8989
Placeholder.unparsed("message", message)));
90-
recipient.sendMessage(miniMessage.deserialize(SPMMessage.RECEIVING_FORMAT.getMessage(),
90+
recipient.sendMessage(miniMessage.deserialize(Message.RECEIVING_FORMAT.getMessage(),
9191
Placeholder.component("sender", senderName),
9292
Placeholder.unparsed("message", message)));
9393
return true;

src/main/java/adhdmc/simplepms/commands/ReloadCommand.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package adhdmc.simplepms.commands;
22

33
import adhdmc.simplepms.SimplePMs;
4-
import adhdmc.simplepms.utils.SPMMessage;
4+
import adhdmc.simplepms.utils.Message;
55
import adhdmc.simplepms.utils.SPMPerm;
66
import net.kyori.adventure.text.minimessage.MiniMessage;
77
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
@@ -20,14 +20,14 @@ public class ReloadCommand implements CommandExecutor, TabCompleter {
2020
@Override
2121
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
2222
if (!sender.hasPermission(SPMPerm.RELOAD_CONFIG.getPerm())) {
23-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_NO_PERMISSION.getMessage(),
24-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
23+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_NO_PERMISSION.getMessage(),
24+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
2525
return false;
2626
}
2727
SimplePMs.getInstance().reloadConfig();
28-
SPMMessage.reloadMessages();
29-
sender.sendMessage(miniMessage.deserialize(SPMMessage.CONFIG_RELOADED.getMessage(),
30-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
28+
Message.reloadMessages();
29+
sender.sendMessage(miniMessage.deserialize(Message.CONFIG_RELOADED.getMessage(),
30+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
3131
return false;
3232
}
3333

src/main/java/adhdmc/simplepms/commands/ReplyCommand.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import adhdmc.simplepms.SimplePMs;
44
import adhdmc.simplepms.utils.SPMKey;
5-
import adhdmc.simplepms.utils.SPMMessage;
5+
import adhdmc.simplepms.utils.Message;
66
import adhdmc.simplepms.utils.Util;
77
import net.kyori.adventure.audience.Audience;
88
import net.kyori.adventure.text.Component;
@@ -35,28 +35,28 @@ public class ReplyCommand implements CommandExecutor, TabCompleter {
3535
@Override
3636
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
3737
if (!(sender instanceof Player player)) {
38-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_PLAYER_COMMAND.getMessage(),
39-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
38+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_PLAYER_COMMAND.getMessage(),
39+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
4040
return true;
4141
}
4242
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
4343
String lastUserMessaged = playerPDC.get(lastMessaged, PersistentDataType.STRING);
4444
if (lastUserMessaged == null) {
45-
player.sendRichMessage(SPMMessage.NO_USER_TO_REPLY.getMessage());
45+
player.sendRichMessage(Message.NO_USER_TO_REPLY.getMessage());
4646
return false;
4747
}
4848
Player recipient = server.getPlayer(lastUserMessaged);
4949
if ((recipient == null) && !lastUserMessaged.equals(console)) {
50-
player.sendRichMessage(SPMMessage.NO_USER_TO_REPLY.getMessage());
50+
player.sendRichMessage(Message.NO_USER_TO_REPLY.getMessage());
5151
return false;
5252
}
5353
Component recipientName;
5454
Component senderSpyName;
5555
Component recieverSpyName = miniMessage.deserialize("<gray>" + recipient.getName());
5656
if (lastUserMessaged.equals(console)){
57-
recipientName = miniMessage.deserialize(SPMMessage.CONSOLE_FORMAT.getMessage());
57+
recipientName = miniMessage.deserialize(Message.CONSOLE_FORMAT.getMessage());
5858
playerPDC.set(lastMessaged, PersistentDataType.STRING, console);
59-
senderSpyName = miniMessage.deserialize(SPMMessage.CONSOLE_FORMAT_SPY.getMessage());
59+
senderSpyName = miniMessage.deserialize(Message.CONSOLE_FORMAT_SPY.getMessage());
6060
} else {
6161
recipientName = recipient.displayName();
6262
playerPDC.set(lastMessaged, PersistentDataType.STRING, recipient.getName());
@@ -68,22 +68,22 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
6868
for (Player spy : spyingPlayers) {
6969
if (!spy.isOnline()) continue;
7070
if (spy.equals(sender) || spy.equals(recipient)) continue;
71-
spy.sendMessage(miniMessage.deserialize(SPMMessage.SPY_FORMAT.getMessage(),
71+
spy.sendMessage(miniMessage.deserialize(Message.SPY_FORMAT.getMessage(),
7272
Placeholder.component("sender", senderSpyName),
7373
Placeholder.component("receiver", recieverSpyName),
7474
Placeholder.unparsed("message", message)));
7575
}
76-
sender.sendMessage(miniMessage.deserialize(SPMMessage.SENDING_FORMAT.getMessage(),
76+
sender.sendMessage(miniMessage.deserialize(Message.SENDING_FORMAT.getMessage(),
7777
Placeholder.component("receiver", recipientName),
7878
Placeholder.parsed("message", message)));
7979
if (recipient == null) {
8080
Audience console = server.getConsoleSender();
81-
console.sendMessage(miniMessage.deserialize(SPMMessage.RECEIVING_FORMAT.getMessage(),
81+
console.sendMessage(miniMessage.deserialize(Message.RECEIVING_FORMAT.getMessage(),
8282
Placeholder.component("sender", player.displayName()),
8383
Placeholder.unparsed("message", message)));
8484
return true;
8585
}
86-
recipient.sendMessage(miniMessage.deserialize(SPMMessage.RECEIVING_FORMAT.getMessage(),
86+
recipient.sendMessage(miniMessage.deserialize(Message.RECEIVING_FORMAT.getMessage(),
8787
Placeholder.component("sender", player.displayName()),
8888
Placeholder.unparsed("message", message)));
8989
return true;

src/main/java/adhdmc/simplepms/commands/SocialSpyCommand.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import adhdmc.simplepms.SimplePMs;
44
import adhdmc.simplepms.utils.SPMKey;
5-
import adhdmc.simplepms.utils.SPMMessage;
5+
import adhdmc.simplepms.utils.Message;
66
import adhdmc.simplepms.utils.SPMPerm;
77
import adhdmc.simplepms.utils.Util;
88
import net.kyori.adventure.text.minimessage.MiniMessage;
@@ -32,14 +32,14 @@ public class SocialSpyCommand implements CommandExecutor, TabCompleter {
3232
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
3333
//Check permissions
3434
if (!sender.hasPermission(SPMPerm.SOCIAL_SPY_TOGGLE.getPerm())) {
35-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_NO_PERMISSION.getMessage(),
36-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
35+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_NO_PERMISSION.getMessage(),
36+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
3737
return false;
3838
}
3939
//Console cannot toggle social spy
4040
if (!(sender instanceof Player player)) {
41-
sender.sendMessage(miniMessage.deserialize(SPMMessage.ERROR_PLAYER_COMMAND.getMessage(),
42-
Placeholder.parsed("plugin_prefix", SPMMessage.PLUGIN_PREFIX.getMessage())));
41+
sender.sendMessage(miniMessage.deserialize(Message.ERROR_PLAYER_COMMAND.getMessage(),
42+
Placeholder.parsed("plugin_prefix", Message.PLUGIN_PREFIX.getMessage())));
4343
return false;
4444
}
4545
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
@@ -48,14 +48,14 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
4848
if (toggleValue == (byte)0) {
4949
playerPDC.set(spyToggle, PersistentDataType.BYTE, (byte)1);
5050
spyingPlayers.add(player);
51-
player.sendMessage(miniMessage.deserialize(SPMMessage.SPY_ENABLED.getMessage()));
51+
player.sendMessage(miniMessage.deserialize(Message.SPY_ENABLED.getMessage()));
5252
return true;
5353
}
5454
//If social spy was enabled, disable, remove player from the set if they are there, message the player, and return
5555
if (toggleValue == (byte)1) {
5656
playerPDC.set(spyToggle, PersistentDataType.BYTE, (byte) 0);
5757
spyingPlayers.remove(player);
58-
player.sendMessage(miniMessage.deserialize(SPMMessage.SPY_DISABLED.getMessage()));
58+
player.sendMessage(miniMessage.deserialize(Message.SPY_DISABLED.getMessage()));
5959
return true;
6060
}
6161
return false;

src/main/java/adhdmc/simplepms/config/Defaults.java

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package adhdmc.simplepms.config;
2+
3+
import adhdmc.simplepms.SimplePMs;
4+
import adhdmc.simplepms.utils.Message;
5+
import org.bukkit.configuration.InvalidConfigurationException;
6+
import org.bukkit.configuration.file.FileConfiguration;
7+
import org.bukkit.configuration.file.YamlConfiguration;
8+
9+
import java.io.File;
10+
import java.io.IOException;
11+
import java.util.Set;
12+
13+
public class LocaleConfig {
14+
15+
private static LocaleConfig instance;
16+
private final String fileName = "locale.yml";
17+
private final File localeFile = new File(SimplePMs.getInstance().getDataFolder(), fileName);
18+
private final FileConfiguration localeConfig = new YamlConfiguration();
19+
20+
21+
private LocaleConfig() {
22+
if (!localeFile.exists()) SimplePMs.getInstance().saveResource(fileName, false);
23+
reloadLocale();
24+
}
25+
26+
public static LocaleConfig getInstance() {
27+
if (instance == null) instance = new LocaleConfig();
28+
return instance;
29+
}
30+
31+
public FileConfiguration getLocale() { return localeConfig; }
32+
33+
/**
34+
* Reloads all locale messages. Logs errors to console if any are found
35+
*/
36+
public void reloadLocale() {
37+
try { localeConfig.load(localeFile); }
38+
catch (IOException | InvalidConfigurationException e) { e.printStackTrace(); }
39+
Set<String> keys = localeConfig.getKeys(false);
40+
for (String key : keys) {
41+
try {
42+
Message message = Message.valueOf(key);
43+
message.setMessage(localeConfig.getString(key, message.getMessage()));
44+
} catch (IllegalArgumentException e) {
45+
SimplePMs.getInstance().getLogger().warning(Message.LOGGER_INVALID_LOCALE_KEY.getMessage() + key);
46+
}
47+
}
48+
}
49+
}

0 commit comments

Comments
 (0)