Added placeholders in string translate

This commit is contained in:
BuildTools
2020-11-13 11:49:38 +00:00
parent 2af108be05
commit ba69fc7556
6 changed files with 41 additions and 7 deletions

View File

@@ -178,7 +178,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
PlaceholderManager.registerPlaceholder(
new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown", (player) -> {
return String.valueOf(Spell.getCooldown((Spell) this, player));
})
}, true)
);
PlaceholderManager.registerPlaceholder(
new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown_total", (player) -> {

View File

@@ -6,10 +6,16 @@ import org.bukkit.entity.Player;
public class PlaceholderEntry {
private final String identifier;
private final ObjectCallable<String, Player> function;
private final boolean requiresPlayer;
public PlaceholderEntry(String identifier, ObjectCallable<String, Player> function) {
this(identifier, function, false);
}
public PlaceholderEntry(String identifier, ObjectCallable<String, Player> function, boolean requiresPlayer) {
this.identifier = identifier;
this.function = function;
this.requiresPlayer = requiresPlayer;
}
public String getIdentifier() {

View File

@@ -1,7 +1,9 @@
package com.willfp.ecoenchants.integrations.placeholder;
import com.willfp.ecoenchants.integrations.Integration;
import org.bukkit.entity.Player;
public interface PlaceholderIntegration extends Integration {
void registerIntegration();
String translate(String text, Player player);
}

View File

@@ -5,12 +5,15 @@ import org.bukkit.entity.Player;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
public class PlaceholderManager {
private static final Set<PlaceholderEntry> placeholders = new HashSet<>();
private static final Set<PlaceholderIntegration> integrations = new HashSet<>();
public static void addIntegration(PlaceholderIntegration integration) {
integration.registerIntegration();
integrations.add(integration);
}
public static void registerPlaceholder(PlaceholderEntry expansion) {
@@ -20,10 +23,12 @@ public class PlaceholderManager {
public static String getResult(Player player, String identifier) {
Optional<PlaceholderEntry> matching = placeholders.stream().filter(expansion -> expansion.getIdentifier().equalsIgnoreCase(identifier)).findFirst();
if(matching.isPresent()) {
return matching.get().getResult(player);
} else {
return null;
}
return matching.map(placeholderEntry -> placeholderEntry.getResult(player)).orElse(null);
}
public static String translatePlaceholders(String text, Player player) {
AtomicReference<String> translatedReference = new AtomicReference<>(text);
integrations.forEach(placeholderIntegration -> translatedReference.set(placeholderIntegration.translate(translatedReference.get(), player)));
return translatedReference.get();
}
}

View File

@@ -3,9 +3,12 @@ package com.willfp.ecoenchants.integrations.placeholder.plugins;
import com.willfp.ecoenchants.EcoEnchantsPlugin;
import com.willfp.ecoenchants.integrations.placeholder.PlaceholderIntegration;
import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager;
import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.entity.Player;
import javax.annotation.PostConstruct;
public class PlaceholderIntegrationPAPI extends PlaceholderExpansion implements PlaceholderIntegration {
@Override
public boolean persist() {
@@ -49,4 +52,9 @@ public class PlaceholderIntegrationPAPI extends PlaceholderExpansion implements
public String getPluginName() {
return "PlaceholderAPI";
}
@Override
public String translate(String text, Player player) {
return PlaceholderAPI.setPlaceholders(player, text);
}
}

View File

@@ -1,6 +1,9 @@
package com.willfp.ecoenchants.util;
import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager;
import net.md_5.bungee.api.ChatColor;
import org.bukkit.entity.Player;
import scala.runtime.Static;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -8,7 +11,17 @@ import java.util.regex.Pattern;
import static net.md_5.bungee.api.ChatColor.COLOR_CHAR;
public class StringUtils {
public static String translate(String message){
public static String translate(String message, Player player) {
message = PlaceholderManager.translatePlaceholders(message, player);
message = translateHexColorCodes("&#", "", message);
message = ChatColor.translateAlternateColorCodes('&', message);
return ChatColor.translateAlternateColorCodes('&', translateHexColorCodes("&#", "", message));
}
public static String translate(String message) {
message = PlaceholderManager.translatePlaceholders(message, null);
message = translateHexColorCodes("&#", "", message);
message = ChatColor.translateAlternateColorCodes('&', message);
return ChatColor.translateAlternateColorCodes('&', translateHexColorCodes("&#", "", message));
}