Skip to content

Commit 8b66ced

Browse files
committed
Update for Plex 2.0
1 parent 2208e1b commit 8b66ced

7 files changed

Lines changed: 82 additions & 50 deletions

File tree

build.gradle.kts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,19 @@ repositories {
2020
}
2121

2222
dependencies {
23-
compileOnly("org.projectlombok:lombok:1.18.42")
24-
annotationProcessor("org.projectlombok:lombok:1.18.42")
25-
compileOnly("io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT")
26-
compileOnly("dev.plex:server:1.6")
27-
compileOnly("net.essentialsx:EssentialsX:2.21.2-SNAPSHOT")
23+
compileOnly("org.projectlombok:lombok:1.18.46")
24+
annotationProcessor("org.projectlombok:lombok:1.18.46")
25+
compileOnly("io.papermc.paper:paper-api:26.1.2.build.+")
26+
compileOnly("dev.plex:api:2.0-SNAPSHOT")
27+
compileOnly("net.essentialsx:EssentialsX:2.22.0-SNAPSHOT")
2828
}
2929

3030
group = "dev.plex"
31-
version = "1.6"
31+
version = "2.0-SNAPSHOT"
3232
description = "Module-NickMiniMessage"
3333

3434
java {
35-
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
35+
toolchain.languageVersion.set(JavaLanguageVersion.of(25))
3636
}
3737

3838
publishing {

gradle/wrapper/gradle-wrapper.jar

4.76 KB
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip
44
networkTimeout=10000
5+
retries=0
6+
retryBackOffMs=500
57
validateDistributionUrl=true
68
zipStoreBase=GRADLE_USER_HOME
79
zipStorePath=wrapper/dists

gradlew

Lines changed: 5 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradlew.bat

Lines changed: 10 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/dev/plex/module/nickmm/command/NickMMCommand.java

Lines changed: 55 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,22 @@
22

33
import com.earth2me.essentials.I18n;
44
import com.earth2me.essentials.User;
5-
import dev.plex.command.PlexCommand;
6-
import dev.plex.command.annotation.CommandParameters;
7-
import dev.plex.command.annotation.CommandPermissions;
5+
import dev.plex.command.SimplePlexCommand;
86
import dev.plex.command.source.RequiredCommandSource;
97
import dev.plex.module.nickmm.NickMiniMessageModule;
10-
import dev.plex.util.minimessage.SafeMiniMessage;
118

9+
import java.util.Arrays;
1210
import java.util.Collections;
1311
import java.util.List;
1412

1513
import net.kyori.adventure.text.Component;
1614
import net.kyori.adventure.text.format.NamedTextColor;
15+
import net.kyori.adventure.text.minimessage.Context;
16+
import net.kyori.adventure.text.minimessage.MiniMessage;
17+
import net.kyori.adventure.text.minimessage.ParsingException;
18+
import net.kyori.adventure.text.minimessage.tag.Tag;
19+
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
20+
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
1721
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
1822
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
1923
import org.bukkit.Bukkit;
@@ -22,12 +26,22 @@
2226
import org.jetbrains.annotations.NotNull;
2327
import org.jetbrains.annotations.Nullable;
2428

25-
@CommandParameters(name = "nickmm", description = "Change your nickname using MiniMessage formatting!", usage = "/<command> <nick>", aliases = "nickminimessage")
26-
@CommandPermissions(permission = "plex.nickmm", source = RequiredCommandSource.IN_GAME)
27-
public class NickMMCommand extends PlexCommand
29+
public class NickMMCommand extends SimplePlexCommand
2830
{
2931
private final PlainTextComponentSerializer plainText = PlainTextComponentSerializer.plainText();
3032
private final LegacyComponentSerializer legacyComponent = LegacyComponentSerializer.legacySection();
33+
private final MiniMessage miniMessage = MiniMessage.builder().tags(new NicknameTagResolver()).build();
34+
35+
public NickMMCommand()
36+
{
37+
super(command("nickmm")
38+
.description("Change your nickname using MiniMessage formatting!")
39+
.usage("/<command> <nick>")
40+
.aliases("nickminimessage")
41+
.permission("plex.nickmm")
42+
.source(RequiredCommandSource.IN_GAME)
43+
.build());
44+
}
3145

3246
@Override
3347
protected Component execute(@NotNull CommandSender commandSender, @Nullable Player player, @NotNull String[] args)
@@ -42,7 +56,7 @@ protected Component execute(@NotNull CommandSender commandSender, @Nullable Play
4256
return usage();
4357
}
4458

45-
final Component nick = SafeMiniMessage.mmDeserializeWithoutEvents(args[0]);
59+
final Component nick = miniMessage.deserialize(args[0]).clickEvent(null).hoverEvent(null);
4660
final String plain = plainText.serialize(nick);
4761

4862
if (plain.length() > NickMiniMessageModule.getEssentials().getSettings().getMaxNickLength()
@@ -65,14 +79,45 @@ protected Component execute(@NotNull CommandSender commandSender, @Nullable Play
6579
}
6680

6781
final String legacy = legacyComponent.serialize(nick);
68-
NickMiniMessageModule.getEssentials().getUser(player).setNickname(legacy);
82+
User essentialsUser = NickMiniMessageModule.getEssentials().getUser(player);
83+
essentialsUser.setNickname(legacy);
84+
essentialsUser.setDisplayNick();
6985

7086
return mmString(I18n.tlLiteral("nickSet", legacy));
7187
}
7288

7389
@Override
74-
public @NotNull List<String> smartTabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException
90+
protected @NotNull List<String> suggestions(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args)
7591
{
7692
return Collections.emptyList();
7793
}
94+
95+
private static class NicknameTagResolver implements TagResolver
96+
{
97+
private static final TagResolver STANDARD_RESOLVER = TagResolver.standard();
98+
private static final List<String> IGNORED_TAGS = Arrays.asList(
99+
"click",
100+
"hover",
101+
"insertion",
102+
"insert",
103+
"obfuscated",
104+
"obf",
105+
"br",
106+
"newline",
107+
"lang",
108+
"key",
109+
"translate");
110+
111+
@Override
112+
public @Nullable Tag resolve(@NotNull String name, @NotNull ArgumentQueue arguments, @NotNull Context ctx) throws ParsingException
113+
{
114+
return IGNORED_TAGS.contains(name.toLowerCase()) ? null : STANDARD_RESOLVER.resolve(name, arguments, ctx);
115+
}
116+
117+
@Override
118+
public boolean has(@NotNull String name)
119+
{
120+
return STANDARD_RESOLVER.has(name);
121+
}
122+
}
78123
}

src/main/resources/module.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: Module-NickMiniMessage
22
main: dev.plex.module.nickmm.NickMiniMessageModule
33
description: Module for Plex that adds a command allowing for Essentials nicknames to be created with MiniMessage
4-
version: 1.6
4+
version: 2.0-SNAPSHOT
5+
apiCompatibility: 1

0 commit comments

Comments
 (0)