Skip to content

Commit b6e2640

Browse files
committed
Update to 1.20.5
1 parent 9536456 commit b6e2640

12 files changed

Lines changed: 119 additions & 96 deletions

File tree

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
matrix:
1313
# Use these Java versions
1414
java: [
15-
17 # Minimum supported by Minecraft
15+
21 # Minimum supported by Minecraft
1616
]
1717
# and run on both Linux and Windows
1818
os: [ubuntu-20.04, windows-latest]
@@ -32,7 +32,7 @@ jobs:
3232
- name: build
3333
run: ./gradlew build
3434
- name: capture build artifacts
35-
if: ${{ runner.os == 'Linux' && matrix.java == '17' }} # Only upload artifacts built from latest java on one OS
35+
if: ${{ runner.os == 'Linux' && matrix.java == '21' }} # Only upload artifacts built from latest java on one OS
3636
uses: actions/upload-artifact@v2
3737
with:
3838
name: Artifacts

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Set up JDK
2525
uses: actions/setup-java@v1
2626
with:
27-
java-version: 17
27+
java-version: 21
2828

2929
- name: Grant execute permission for gradlew
3030
run: chmod +x gradlew

build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id 'fabric-loom' version '1.4.+'
2+
id 'fabric-loom' version '1.6.+'
33
id 'maven-publish'
44
id "com.modrinth.minotaur" version "2.+"
55
id 'com.matthewprenger.cursegradle' version '1.4.0'
@@ -38,9 +38,10 @@ dependencies {
3838
modCompileOnly("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")
3939
modLocalRuntime("net.fabricmc.fabric-api:fabric-api:${project.fabric_version}")
4040

41-
modImplementation include("eu.pb4:placeholder-api:2.3.0+1.20.3")
41+
//modImplementation include("eu.pb4:predicate-api:0.4.0+1.20.5")
42+
modImplementation include("eu.pb4:placeholder-api:2.4.0-pre.1+1.20.5")
43+
modImplementation include("me.lucko:fabric-permissions-api:0.3.1")
4244
modImplementation include("eu.pb4:player-data-api:0.4.0+1.20.3")
43-
modImplementation include("me.lucko:fabric-permissions-api:0.2-SNAPSHOT")
4445

4546
modCompileOnly("maven.modrinth:vanish:1.4.0+1.19.4")
4647

gradle.properties

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ org.gradle.jvmargs=-Xmx1G
33

44
# Fabric Properties
55
# check these on https://fabricmc.net/use
6-
minecraft_version=1.20.3-rc1
7-
yarn_mappings=1.20.3-rc1+build.1
8-
loader_version=0.15.0
6+
minecraft_version=1.20.5-rc2
7+
yarn_mappings=1.20.5-rc2+build.1
8+
loader_version=0.15.10
99

1010
#Fabric api
11-
fabric_version=0.91.1+1.20.3
11+
fabric_version=0.97.3+1.20.5
1212
# Mod Properties
13-
mod_version = 1.4.0+1.20.3
13+
mod_version = 1.5.0+1.20.5
1414
maven_group = eu.pb4
1515
archives_base_name = styled-nicknames
1616

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

src/main/java/eu/pb4/stylednicknames/NicknameHolder.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.jetbrains.annotations.Nullable;
88

99
import java.util.Map;
10+
import java.util.function.Function;
1011

1112
public interface NicknameHolder {
1213
NicknameHolder EMPTY = new NicknameHolder() {
@@ -48,8 +49,8 @@ public interface NicknameHolder {
4849
}
4950

5051
@Override
51-
public Map<String, Text> styledNicknames$placeholdersCommand() {
52-
return Map.of("nickname", Text.empty(), "name", Text.empty());
52+
public Function<String, Text> styledNicknames$placeholdersCommand() {
53+
return x -> Text.empty();
5354
}
5455
};
5556

@@ -87,5 +88,5 @@ static NicknameHolder of(Object possiblePlayer) {
8788

8889
boolean styledNicknames$shouldDisplay();
8990

90-
Map<String, Text> styledNicknames$placeholdersCommand();
91+
Function<String, Text> styledNicknames$placeholdersCommand();
9192
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package eu.pb4.stylednicknames;
2+
3+
import eu.pb4.placeholders.api.parsers.NodeParser;
4+
import eu.pb4.placeholders.api.parsers.tag.TagRegistry;
5+
import eu.pb4.stylednicknames.config.ConfigManager;
6+
import me.lucko.fabric.api.permissions.v0.Permissions;
7+
import net.minecraft.server.network.ServerPlayerEntity;
8+
import net.minecraft.util.Formatting;
9+
import org.jetbrains.annotations.Nullable;
10+
11+
import java.util.ArrayList;
12+
13+
public class ParserUtils {
14+
15+
public static NodeParser getParser(@Nullable ServerPlayerEntity player) {
16+
var b = NodeParser.builder();
17+
var config = ConfigManager.getConfig();
18+
19+
if (player != null) {
20+
var registry = TagRegistry.create();
21+
for (var entry : TagRegistry.SAFE.getTags()) {
22+
if ((config.defaultFormattingCodes.getBoolean(entry.name())
23+
|| Permissions.check(player, "stylednicknames.format." + entry.name(), 2))) {
24+
registry.register(entry);
25+
}
26+
}
27+
b.simplifiedTextFormat().quickText()
28+
.customTagRegistry(registry);
29+
30+
if (config.configData.allowLegacyFormatting) {
31+
var formats = new ArrayList<Formatting>();
32+
for (Formatting formatting : Formatting.values()) {
33+
if (registry.getTag(formatting.getName()) != null) {
34+
formats.add(formatting);
35+
}
36+
}
37+
if (!formats.isEmpty() || registry.getTag("color") != null) {
38+
b.legacy(registry.getTag("color") != null, formats);
39+
}
40+
}
41+
} else {
42+
b.simplifiedTextFormat().quickText();
43+
if (config.configData.allowLegacyFormatting) {
44+
b.legacyAll();
45+
}
46+
}
47+
48+
return b.build();
49+
}
50+
}

src/main/java/eu/pb4/stylednicknames/command/Commands.java

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
import com.mojang.brigadier.context.CommandContext;
66
import com.mojang.brigadier.exceptions.CommandSyntaxException;
77
import com.mojang.brigadier.suggestion.SuggestionProvider;
8-
import eu.pb4.placeholders.api.Placeholders;
9-
import eu.pb4.placeholders.api.TextParserUtils;
10-
import eu.pb4.placeholders.api.parsers.TextParserV1;
8+
import eu.pb4.placeholders.api.ParserContext;
119
import eu.pb4.stylednicknames.NicknameHolder;
10+
import eu.pb4.stylednicknames.ParserUtils;
1211
import eu.pb4.stylednicknames.StyledNicknamesMod;
12+
import eu.pb4.stylednicknames.config.Config;
1313
import eu.pb4.stylednicknames.config.ConfigManager;
1414
import me.drex.vanish.api.VanishAPI;
1515
import me.lucko.fabric.api.permissions.v0.Permissions;
@@ -93,30 +93,8 @@ private static int change(CommandContext<ServerCommandSource> context) throws Co
9393
var config = ConfigManager.getConfig();
9494
var nickname = context.getArgument("nickname", String.class);
9595
if (config.configData.maxLength > 0) {
96-
Map<String, TextParserV1.TagNodeBuilder> handlers = new HashMap<>();
97-
for (var entry : TextParserV1.SAFE.getTags()) {
98-
if ((config.defaultFormattingCodes.getBoolean(entry.name())
99-
|| Permissions.check(context.getSource(), "stylednicknames.format." + entry.name(), 2))) {
100-
101-
handlers.put(entry.name(), entry.parser());
102-
103-
if (entry.aliases() != null) {
104-
for (var a : entry.aliases()) {
105-
handlers.put(a, entry.parser());
106-
}
107-
}
108-
}
109-
}
110-
111-
if (config.configData.allowLegacyFormatting) {
112-
for (Formatting formatting : Formatting.values()) {
113-
if (handlers.get(formatting.getName()) != null) {
114-
nickname = nickname.replace(String.copyValueOf(new char[]{'&', formatting.getCode()}), "<" + formatting.getName() + ">");
115-
}
116-
}
117-
}
118-
119-
var output = TextParserUtils.formatText(nickname, handlers::get);
96+
var parser = ParserUtils.getParser(context.getSource().getPlayerOrThrow());
97+
var output = parser.parseText(nickname, ParserContext.of());
12098

12199
if (output.getString().length() > config.configData.maxLength && !Permissions.check(context.getSource(), "stylednicknames.ignore_limit", 2)) {
122100
context.getSource().sendFeedback(() -> ConfigManager.getConfig().tooLongText, false);
@@ -126,17 +104,15 @@ private static int change(CommandContext<ServerCommandSource> context) throws Co
126104

127105
holder.styledNicknames$set(nickname, true);
128106
context.getSource().sendFeedback(() ->
129-
Placeholders.parseText(ConfigManager.getConfig().changeText, Placeholders.PREDEFINED_PLACEHOLDER_PATTERN, holder.styledNicknames$placeholdersCommand()),
107+
ConfigManager.getConfig().changeText.toText(ParserContext.of(Config.KEY, holder.styledNicknames$placeholdersCommand())),
130108
false);
131109
return 0;
132110
}
133111

134112
private static int reset(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
135113
NicknameHolder.of(context.getSource().getPlayerOrThrow()).styledNicknames$set(null, false);
136114
context.getSource().sendFeedback(() ->
137-
Placeholders.parseText(ConfigManager.getConfig().resetText, Placeholders.PREDEFINED_PLACEHOLDER_PATTERN, Map.of(
138-
"nickname", context.getSource().getPlayer().getName(),
139-
"name", context.getSource().getPlayer().getName()
115+
ConfigManager.getConfig().resetText.toText(ParserContext.of(Config.KEY, (x) -> context.getSource().getPlayer().getName()
140116
)),
141117
false);
142118
return 0;
@@ -168,7 +144,7 @@ private static int realname(CommandContext<ServerCommandSource> context) {
168144
}
169145
}
170146
if (foundPlayers.isEmpty()) {
171-
context.getSource().sendError(Text.translatable("No player with that nickname is currently online."));
147+
context.getSource().sendError(Text.literal("No player with that nickname is currently online."));
172148
} else {
173149
if (foundPlayers.size() > 1) {
174150
context.getSource().sendFeedback(() -> Text.translatable("Found %s players with that nickname:", foundPlayers.size()), false);

src/main/java/eu/pb4/stylednicknames/config/Config.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,45 @@
11
package eu.pb4.stylednicknames.config;
22

33

4+
import eu.pb4.placeholders.api.ParserContext;
45
import eu.pb4.placeholders.api.TextParserUtils;
6+
import eu.pb4.placeholders.api.node.DynamicTextNode;
57
import eu.pb4.placeholders.api.node.TextNode;
8+
import eu.pb4.placeholders.api.parsers.NodeParser;
9+
import eu.pb4.placeholders.api.parsers.TagLikeParser;
10+
import eu.pb4.placeholders.api.parsers.TagParser;
611
import eu.pb4.stylednicknames.config.data.ConfigData;
712
import it.unimi.dsi.fastutil.objects.Object2BooleanArrayMap;
813
import net.minecraft.text.Text;
914

15+
import java.util.function.Function;
16+
1017

1118
public final class Config {
19+
public static final ParserContext.Key<Function<String, Text>> KEY = DynamicTextNode.key("styled_nicknames");
20+
21+
public static final NodeParser PARSER = NodeParser.builder()
22+
.simplifiedTextFormat()
23+
.quickText()
24+
.placeholders(TagLikeParser.PLACEHOLDER_USER, KEY)
25+
.staticPreParsing()
26+
.build();
27+
1228
public final ConfigData configData;
1329
public final Object2BooleanArrayMap<String> defaultFormattingCodes;
1430
public final TextNode nicknameFormat;
31+
public final TextNode nicknameFormatColor;
1532
public final TextNode changeText;
1633
public final TextNode resetText;
1734
public final Text tooLongText;
1835

1936
public Config(ConfigData data) {
2037
this.configData = data;
21-
this.nicknameFormat = TextParserUtils.formatNodes(data.nicknameFormat);
22-
this.changeText = TextParserUtils.formatNodes(data.nicknameChangedMessage);
23-
this.resetText = TextParserUtils.formatNodes(data.nicknameResetMessage);
24-
this.tooLongText = TextParserUtils.formatText(data.tooLongMessage);
38+
this.nicknameFormat = PARSER.parseNode(data.nicknameFormat);
39+
this.nicknameFormatColor = PARSER.parseNode(data.nicknameFormatColor);
40+
this.changeText = PARSER.parseNode(data.nicknameChangedMessage);
41+
this.resetText = PARSER.parseNode(data.nicknameResetMessage);
42+
this.tooLongText = PARSER.parseText(data.tooLongMessage, ParserContext.of());
2543
this.defaultFormattingCodes = new Object2BooleanArrayMap<>(this.configData.defaultEnabledFormatting);
2644
}
2745

src/main/java/eu/pb4/stylednicknames/config/ConfigManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import java.io.*;
1212

1313
public class ConfigManager {
14-
public static final int VERSION = 1;
14+
public static final int VERSION = 2;
1515
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().setLenient().create();
1616

1717
private static Config CONFIG;

0 commit comments

Comments
 (0)