Skip to content

Commit

Permalink
Add alternative placeholder pattern
Browse files Browse the repository at this point in the history
  • Loading branch information
Patbox committed Feb 5, 2021
1 parent 5cd8a84 commit 4557571
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 20 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ org.gradle.jvmargs=-Xmx1G
loader_version=0.11.0

# Mod Properties
mod_version = 0.1.3
mod_version = 0.2.0
maven_group = eu.pb4
archives_base_name = placeholder-api
12 changes: 6 additions & 6 deletions src/main/java/eu/pb4/placeholders/Helpers.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;

import java.time.Duration;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Helpers {
public static String textToString(Text text) {
Expand Down Expand Up @@ -48,9 +48,9 @@ private static void recursiveParsing(StringBuffer string, List<Text> textList) {
}
}

protected static Text recursivePlaceholderParsing(Text text, Object object) {
protected static Text recursivePlaceholderParsing(Text text, Object object, Pattern pattern) {
String string = text.asString();
Matcher matcher = PlaceholderAPI.PLACEHOLDER_PATTERN.matcher(string);
Matcher matcher = pattern.matcher(string);

MutableText out = new LiteralText("").setStyle(text.getStyle());
int start;
Expand Down Expand Up @@ -84,13 +84,13 @@ protected static Text recursivePlaceholderParsing(Text text, Object object) {
out.append(new LiteralText(string.substring(previousEnd)));

for(Text text1 : text.getSiblings()) {
out.append(recursivePlaceholderParsing(text1, object));
out.append(recursivePlaceholderParsing(text1, object, pattern));
}
return out;
}

public static String parseString(String text, Object object) {
Matcher matcher = PlaceholderAPI.PLACEHOLDER_PATTERN.matcher(text);
public static String parseString(String text, Object object, Pattern pattern) {
Matcher matcher = pattern.matcher(text);
StringBuffer out = new StringBuffer(text.length());

ServerPlayerEntity player = object instanceof ServerPlayerEntity ? (ServerPlayerEntity) object : null;
Expand Down
29 changes: 23 additions & 6 deletions src/main/java/eu/pb4/placeholders/PlaceholderAPI.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package eu.pb4.placeholders;

import eu.pb4.placeholders.buildin.PlayerPlaceholders;
import eu.pb4.placeholders.buildin.ServerPlaceholders;
import eu.pb4.placeholders.builtin.PlayerPlaceholders;
import eu.pb4.placeholders.builtin.ServerPlaceholders;
import net.fabricmc.api.ModInitializer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
Expand All @@ -14,6 +14,7 @@

public class PlaceholderAPI implements ModInitializer {
public static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("[%]([^%]+:[^%]+)[%]");
public static final Pattern ALT_PLACEHOLDER_PATTERN = Pattern.compile("[{]([^{}]+:[^{}]+)[}]");

private static final HashMap<Identifier, PlaceholderHandler> PLACEHOLDERS = new HashMap<>();

Expand All @@ -26,20 +27,36 @@ public static PlaceholderResult parsePlaceholder(PlaceholderContext context) {
}

public static String parseString(String text, ServerPlayerEntity player) {
return Helpers.parseString(text, player);
return Helpers.parseString(text, player, PLACEHOLDER_PATTERN);
}

public static String parseString(String text, MinecraftServer server) {
return Helpers.parseString(text, server);
return Helpers.parseString(text, server, PLACEHOLDER_PATTERN);

}

public static Text parseText(Text text, ServerPlayerEntity player) {
return Helpers.recursivePlaceholderParsing(text, player);
return Helpers.recursivePlaceholderParsing(text, player, PLACEHOLDER_PATTERN);
}

public static Text parseText(Text text, MinecraftServer server) {
return Helpers.recursivePlaceholderParsing(text, server);
return Helpers.recursivePlaceholderParsing(text, server, ALT_PLACEHOLDER_PATTERN);
}

public static String parseStringAlt(String text, ServerPlayerEntity player) {
return Helpers.parseString(text, player, ALT_PLACEHOLDER_PATTERN);
}

public static String parseStringAlt(String text, MinecraftServer server) {
return Helpers.parseString(text, server, ALT_PLACEHOLDER_PATTERN);
}

public static Text parseTextAlt(Text text, ServerPlayerEntity player) {
return Helpers.recursivePlaceholderParsing(text, player, ALT_PLACEHOLDER_PATTERN);
}

public static Text parseTextAlt(Text text, MinecraftServer server) {
return Helpers.recursivePlaceholderParsing(text, server, ALT_PLACEHOLDER_PATTERN);
}

public static void register(Identifier identifier, PlaceholderHandler handler) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package eu.pb4.placeholders.buildin;
package eu.pb4.placeholders.builtin;

import eu.pb4.placeholders.Helpers;
import eu.pb4.placeholders.PlaceholderAPI;
Expand Down Expand Up @@ -76,10 +76,10 @@ public static void register() {
PlaceholderAPI.register(new Identifier("player", "statistic"), (ctx) -> {
if (ctx.playerExist()) {
Identifier identifier = Identifier.tryParse(ctx.getArgument());
if (identifier == null || ctx.hasArgument()) {
return PlaceholderResult.invalid("Invalid statistic!");
if (identifier != null && ctx.hasArgument()) {
return PlaceholderResult.value(String.valueOf(ctx.getPlayer().getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(identifier))));
}
return PlaceholderResult.value(String.valueOf(ctx.getPlayer().getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(identifier))));
return PlaceholderResult.invalid("Invalid statistic!");
} else {
return PlaceholderResult.invalid("No player!");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package eu.pb4.placeholders.buildin;
package eu.pb4.placeholders.builtin;

import eu.pb4.placeholders.PlaceholderAPI;
import eu.pb4.placeholders.PlaceholderResult;
Expand All @@ -21,7 +21,7 @@ public static void register() {
int x = Integer.getInteger(ctx.getArgument());
format = "%." + x + "f";
} catch (Exception e) {

format = "%.1f";
}
}

Expand All @@ -37,7 +37,7 @@ public static void register() {
int x = Integer.getInteger(ctx.getArgument());
format = "%." + x + "f";
} catch (Exception e) {

format = "%.1f";
}
}
return PlaceholderResult.value(new LiteralText(String.format(format, tps)).formatted(tps > 19 ? Formatting.GREEN : tps > 16 ? Formatting.GOLD : Formatting.RED));
Expand Down

0 comments on commit 4557571

Please sign in to comment.