Added placeholders in string translate
This commit is contained in:
@@ -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) -> {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user