Skip to content

Commit 76fc4dc

Browse files
committed
Support disabling PlaceholderAPI features
1 parent dee27ee commit 76fc4dc

File tree

8 files changed

+34
-11
lines changed

8 files changed

+34
-11
lines changed

src/main/java/me/rothes/protocolstringreplacer/ConfigManager.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package me.rothes.protocolstringreplacer;
22

3+
import org.bukkit.Bukkit;
4+
35
import java.util.Locale;
46

57
public class ConfigManager {
@@ -8,8 +10,10 @@ public class ConfigManager {
810

911
public final boolean cmdTypingSound;
1012

13+
public final boolean placeholderEnabled;
1114
public final char placeholderHead;
1215
public final char placeholderTail;
16+
public final boolean consolePlaceholder;
1317

1418
public final long cleanTaskInterval;
1519
public final long cleanAccessInterval;
@@ -18,7 +22,6 @@ public class ConfigManager {
1822

1923
public final String listenerPriority;
2024
public final boolean forceReplace;
21-
public final boolean consolePlaceholder;
2225

2326
public final boolean convertPlayerChat;
2427
public final boolean removeCacheWhenMerchantTrade;
@@ -40,6 +43,16 @@ public ConfigManager(ProtocolStringReplacer instance) {
4043
this.placeholderHead = placeholderHead.charAt(0);
4144
}
4245

46+
if (instance.getConfig().getBoolean("Options.Features.Placeholder.Placeholder-Enabled", true)) {
47+
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
48+
placeholderEnabled = true;
49+
} else {
50+
ProtocolStringReplacer.warn(PsrLocalization.getLocaledMessage("Console-Sender.Messages.Initialize.Missing-PAPI"));
51+
placeholderEnabled = false;
52+
}
53+
} else {
54+
placeholderEnabled = false;
55+
}
4356
String placeholderTail = instance.getConfig().getString("Options.Features.Placeholder.Placeholder-Tail");
4457
if (placeholderTail == null || placeholderTail.isEmpty()) {
4558
ProtocolStringReplacer.error(PsrLocalization.getLocaledMessage("Console-Sender.Messages.Config.Invalid-Placeholder-Tail"));

src/main/java/me/rothes/protocolstringreplacer/ProtocolStringReplacer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public void onEnable() {
185185
warn("\033[0;31m" + PsrLocalization.getLocaledMessage("Console-Sender.Messages.Initialize.Recommend-Paper") + "\033[0m");
186186
}
187187
}
188-
if (!checkDepends("PlaceholderAPI", "ProtocolLib")) {
188+
if (!checkDepends("ProtocolLib")) {
189189
initialize();
190190
new Updater(this).start();
191191
}

src/main/java/me/rothes/protocolstringreplacer/commands/subcommands/Parse.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ private void startParse(@NotNull PsrUser user, @NotNull String originalText, Pla
9898
}
9999

100100
ComponentBuilder placeholderMessage = new ComponentBuilder(PsrLocalization.getLocaledMessage("Sender.Commands.Parse.Result.PAPI-Replace.Start-Prefix"));
101-
if (ProtocolStringReplacer.getInstance().getReplacerManager().hasPlaceholder(text)) {
101+
if (ProtocolStringReplacer.getInstance().getConfigManager().placeholderEnabled
102+
&& ProtocolStringReplacer.getInstance().getReplacerManager().hasPlaceholder(text)) {
102103
String original1 = text;
103104
PsrUser placeholderTarget = player == null ? ProtocolStringReplacer.getInstance().getUserManager().getConsoleUser() :
104105
ProtocolStringReplacer.getInstance().getUserManager().getUser(player);

src/main/java/me/rothes/protocolstringreplacer/replacer/ReplacerManager.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.io.File;
2424
import java.io.IOException;
2525
import java.util.ArrayList;
26+
import java.util.Collections;
2627
import java.util.HashMap;
2728
import java.util.LinkedList;
2829
import java.util.List;
@@ -138,9 +139,11 @@ public void registerTask() {
138139
}
139140

140141
public void initialize() {
141-
this.papiReplacer = new PAPIReplacer();
142-
papiHead = papiReplacer.getHead();
143-
papiTail = papiReplacer.getTail();
142+
if (ProtocolStringReplacer.getInstance().getConfigManager().placeholderEnabled) {
143+
this.papiReplacer = new PAPIReplacer();
144+
papiHead = papiReplacer.getHead();
145+
papiTail = papiReplacer.getTail();
146+
}
144147

145148
File path = new File(ProtocolStringReplacer.getInstance().getDataFolder() + "/Replacers");
146149
long startTime = System.nanoTime();
@@ -396,14 +399,10 @@ public String replaceDirect(@Nonnull String string, @Nonnull List<ReplacerConfig
396399
}
397400

398401
public void setPapi(@Nonnull PsrUser user, @Nonnull List<Replaceable> replaceables) {
399-
setPapi(user, replaceables, getPapiIndexes(replaceables));
400-
}
401-
402-
public void setPapi(@Nonnull PsrUser user, @Nonnull List<Replaceable> replaceables, List<Integer> indexes) {
403402
Validate.notNull(user, "PsrUser cannot be null");
404403
Validate.notNull(replaceables, "List cannot be null");
405-
Validate.notNull(indexes, "List cannot be null");
406404

405+
List<Integer> indexes = getPapiIndexes(replaceables);
407406
if (indexes.isEmpty()) {
408407
return;
409408
}
@@ -427,6 +426,10 @@ public void setPapi(@Nonnull PsrUser user, @Nonnull List<Replaceable> replaceabl
427426
public List<Integer> getPapiIndexes(@Nonnull List<Replaceable> replaceables) {
428427
Validate.notNull(replaceables, "List cannot be null");
429428

429+
if (!ProtocolStringReplacer.getInstance().getConfigManager().placeholderEnabled) {
430+
return Collections.emptyList();
431+
}
432+
430433
List<Integer> result = new ArrayList<>();
431434
for (int i = 0; i < replaceables.size(); i++) {
432435
Replaceable replaceable = replaceables.get(i);

src/main/resources/Languages/en-US/Configs/Config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ Options:
3131
# By default, you can use the format with {player_name}(Chinese character) to use the placeholder.
3232
# You may need to edit them for convenient usage.
3333
Placeholder:
34+
# Enable PlaceholderAPI features. Disable if you don't need placeholder parsing.
35+
Placeholder-Enabled: true
3436
# The prefix of a placeholder. Only one character allowed.
3537
Placeholder-Head:
3638
# The suffix of a placeholder. Only one character allowed.

src/main/resources/Languages/en-US/Locales/Locale.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Console-Sender:
77
Recommend-Paper: 'You are not running Paper server or its fork. It''s recommended to switch to Paper for full supports.'
88
Out-Dated-Server: 'Your server version is too outdated, and may not enjoy some features normally...'
99
Missing-Dependency: '&cDependency plugin ''%0%'' is not detected,please install it before using this plugin.'
10+
Missing-PAPI: '&cPlaceholderAPI is not installed, Placeholder features is disabled though you enabled it in global config.'
1011
Created-Example-Replacers: '&aGenerated example replacer configs.'
1112
Added-Missing-Config-Key: '&cAutomatically added missing configuration key in Config.yml %0%'
1213
Backing-Up-Configs: '&aBacking up configurations to folder: %0%'

src/main/resources/Languages/zh-CN/Configs/Config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Options:
3030
# 以防止玩家通过占位符获取到不该获取的信息.
3131
# 在默认值下, 使用如{player_name}的格式来获取占位符的变量.
3232
Placeholder:
33+
# 启用 PlaceholderAPI 功能. 如果您不需要解析占位符, 可以关闭此功能.
34+
Placeholder-Enabled: true
3335
# 使用占位符的前缀. 仅允许一个字符.
3436
Placeholder-Head:
3537
# 使用占位符的后缀. 仅允许一个字符.

src/main/resources/Languages/zh-CN/Locales/Locale.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Console-Sender:
77
Recommend-Paper: '您未使用 Paper 或其衍生服务端核心. 建议使用 Paper 以获得完整功能.'
88
Out-Dated-Server: '您使用的服务端过旧, 可能无法正常享受一些功能..'
99
Missing-Dependency: '&c未检测到前置插件 %0%,请安装后再使用本插件.'
10+
Missing-PAPI: '&c未安装 PlaceholderAPI, 尽管您在全局配置中启用了占位符功能, 此功能已被禁用.'
1011
Created-Example-Replacers: '&a已生成示例配置.'
1112
Added-Missing-Config-Key: '&c自动补充了 Config.yml 缺失的配置键 %0%'
1213
Backing-Up-Configs: '&a正在备份配置文件到文件夹: %0%'

0 commit comments

Comments
 (0)