diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml
index d5c2c34..dad5169 100644
--- a/.github/workflows/gradle.yml
+++ b/.github/workflows/gradle.yml
@@ -13,10 +13,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- - name: Set up JDK 21
+ - name: Set up JDK 25
uses: actions/setup-java@v4
with:
- java-version: '21'
+ java-version: '25'
distribution: 'temurin'
- name: Setup Gradle
diff --git a/README.md b/README.md
index f53020d..05654b2 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# ClanTag
-
+
### What is it?
@@ -13,8 +13,7 @@
- Placeholders via https://github.com/Patbox/TextPlaceholderAPI
- Permissions via https://github.com/LuckPerms/LuckPerms
-## Requires
-- LuckPerms: https://luckperms.net/download
+If no permissions are set, admin commands default to operator level 3 (Admins)
---
diff --git a/build.gradle b/build.gradle
index 0bffafe..6547190 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'fabric-loom' version '1.15-SNAPSHOT'
+ id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT'
id 'maven-publish'
}
@@ -43,32 +43,29 @@ repositories {
dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
- mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
- modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
+ implementation "net.fabricmc:fabric-loader:${project.loader_version}"
- modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
- modImplementation "eu.pb4:placeholder-api:${project.placeholder_api_version}"
- compileOnly "net.luckperms:api:${project.luckperms_version}"
+ implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
+ implementation "eu.pb4:placeholder-api:${project.placeholder_api_version}"
implementation("org.xerial:sqlite-jdbc:${project.sqlite_jdbc_version}")
include("org.xerial:sqlite-jdbc:${project.sqlite_jdbc_version}")
+ include(implementation "me.lucko:fabric-permissions-api:${project.fabric_permissions_api}")
}
processResources {
inputs.property "version", project.version
inputs.property "minecraft_version", project.minecraft_version
inputs.property "loader_version", project.loader_version
- inputs.property "luckperms_version", project.luckperms_version
filteringCharset "UTF-8"
filesMatching("fabric.mod.json") {
expand "version": project.version,
"minecraft_version": project.minecraft_version,
- "loader_version": project.loader_version,
- "luckperms_version": project.luckperms_version
+ "loader_version": project.loader_version
}
}
-def targetJavaVersion = 21
+def targetJavaVersion = 25
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
diff --git a/gradle.properties b/gradle.properties
index 5f2107f..00e5866 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,16 +2,16 @@
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
-minecraft_version=1.21.11
-yarn_mappings=1.21.11+build.4
+minecraft_version=26.1
loader_version=0.18.4
+loom_version=1.15-SNAPSHOT
# Mod Properties
-mod_version=1.1.0
+mod_version=1.1.1+26.1
maven_group=mnfu
archives_base_name=ClanTag
# Dependencies
# check this on https://modmuss50.me/fabric.html
-fabric_version=0.141.3+1.21.11
-placeholder_api_version=2.8.2+1.21.10
+fabric_api_version=0.144.3+26.1
+placeholder_api_version=3.0.0-beta.2+26.1
sqlite_jdbc_version=3.51.2.0
-luckperms_version=5.4
+fabric_permissions_api=0.7.0
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 23449a2..c61a118 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/src/main/java/mnfu/clantag/ClanTag.java b/src/main/java/mnfu/clantag/ClanTag.java
index ec698de..1eb16d1 100644
--- a/src/main/java/mnfu/clantag/ClanTag.java
+++ b/src/main/java/mnfu/clantag/ClanTag.java
@@ -6,11 +6,12 @@
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
-import net.minecraft.util.Identifier;
+import net.minecraft.commands.Commands;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
+import net.minecraft.ChatFormatting;
+import net.minecraft.resources.Identifier;
+import net.minecraft.world.entity.player.Player;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import eu.pb4.placeholders.api.Placeholders;
@@ -40,42 +41,46 @@ public void onInitialize() {
// cache players when they join, reducing any offline player lookups
ServerPlayConnectionEvents.JOIN.register(((serverPlayNetworkHandler, packetSender, minecraftServer) -> {
- ServerPlayerEntity player = serverPlayNetworkHandler.getPlayer();
+ ServerPlayer player = serverPlayNetworkHandler.getPlayer();
MojangApi.cachePlayer(player);
PersistentPlayerCache cache = PersistentPlayerCache.getInstance();
if (cache != null) {
- boolean updated = cache.updateIfChanged(player.getUuid(), player.getName().getString());
+ boolean updated = cache.updateIfChanged(player.getUUID(), player.getName().getString());
if (updated) {
- LOGGER.debug("Updated persistent cache for {} ({})", player.getName().getString(), player.getUuid());
+ LOGGER.debug("Updated persistent cache for {} ({})", player.getName().getString(), player.getUUID());
}
}
}));
// register placeholders
- Placeholders.register(
- Identifier.of("clantag", "player_clan_name"),
+ Placeholders.registerServer(
+ Identifier.fromNamespaceAndPath("clantag", "player_clan_name"),
(ctx, arg) -> {
- if (!ctx.hasPlayer() || ctx.player() == null) return PlaceholderResult.invalid();
- Clan clan = clanManager.getPlayerClan(ctx.player().getUuid());
- if (clan == null) return PlaceholderResult.value(Text.literal("Avience"));
- return PlaceholderResult.value(Text.literal(clan.name()));
+ if (!ctx.hasPlayer()) return PlaceholderResult.invalid();
+ Player player = ctx.player();
+ if (player == null) return PlaceholderResult.invalid();
+ Clan clan = clanManager.getPlayerClan(player.getUUID());
+ if (clan == null) return PlaceholderResult.value(Component.literal("Avience"));
+ return PlaceholderResult.value(Component.literal(clan.name()));
}
);
- Placeholders.register(
- Identifier.of("clantag", "player_clan_name_colored"),
+ Placeholders.registerServer(
+ Identifier.fromNamespaceAndPath("clantag", "player_clan_name_colored"),
(ctx, arg) -> {
- if (!ctx.hasPlayer() || ctx.player() == null) return PlaceholderResult.invalid();
- Clan clan = clanManager.getPlayerClan(ctx.player().getUuid());
- if (clan == null) return PlaceholderResult.value(Text.literal("Avience").formatted(Formatting.GRAY));
- return PlaceholderResult.value(Text.literal(clan.name()).withColor(Integer.parseInt(clan.hexColor().substring(1), 16)));
+ if (!ctx.hasPlayer()) return PlaceholderResult.invalid();
+ Player player = ctx.player();
+ if (player == null) return PlaceholderResult.invalid();
+ Clan clan = clanManager.getPlayerClan(player.getUUID());
+ if (clan == null) return PlaceholderResult.value(Component.literal("Avience").withStyle(ChatFormatting.GRAY));
+ return PlaceholderResult.value(Component.literal(clan.name()).withColor(Integer.parseInt(clan.hexColor().substring(1), 16)));
}
);
// register commands
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
- var baseCommand = CommandManager.literal("clan");
+ var baseCommand = Commands.literal("clan");
HelpCommand helpCommandClass = new HelpCommand();
var helpCommand = new HelpCommand().build();
var adminCommand = new AdminCommand(clanManager).build();
diff --git a/src/main/java/mnfu/clantag/MojangApi.java b/src/main/java/mnfu/clantag/MojangApi.java
index da5528b..9bb77aa 100644
--- a/src/main/java/mnfu/clantag/MojangApi.java
+++ b/src/main/java/mnfu/clantag/MojangApi.java
@@ -2,7 +2,7 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
-import net.minecraft.server.network.ServerPlayerEntity;
+import net.minecraft.server.level.ServerPlayer;
import java.net.URI;
import java.net.http.HttpClient;
@@ -153,10 +153,10 @@ private static Optional handleUuidResponse(HttpResponse response,
/**
* Caches a currently online player’s UUID and username in {@link MojangCache}.
*
- * @param player the online {@link ServerPlayerEntity} to cache
+ * @param player the online {@link ServerPlayer} to cache
*/
- public static void cachePlayer(ServerPlayerEntity player) {
- CACHE.put(player.getUuid(), player.getName().getString());
+ public static void cachePlayer(ServerPlayer player) {
+ CACHE.put(player.getUUID(), player.getName().getString());
}
/**
diff --git a/src/main/java/mnfu/clantag/commands/AdminCommand.java b/src/main/java/mnfu/clantag/commands/AdminCommand.java
index d5bd84f..ce9d9f5 100644
--- a/src/main/java/mnfu/clantag/commands/AdminCommand.java
+++ b/src/main/java/mnfu/clantag/commands/AdminCommand.java
@@ -6,15 +6,13 @@
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
import mnfu.clantag.MojangApi;
-import net.luckperms.api.LuckPerms;
-import net.luckperms.api.LuckPermsProvider;
-import net.luckperms.api.model.user.User;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
+import me.lucko.fabric.api.permissions.v0.Permissions;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
+import net.minecraft.network.chat.Component;
+import net.minecraft.ChatFormatting;
+import net.minecraft.server.permissions.PermissionLevel;
import java.util.UUID;
import java.util.function.Predicate;
@@ -23,9 +21,6 @@
public class AdminCommand {
private final ClanManager clanManager;
- private LuckPerms lpApi = null;
- private static final Predicate OWNER_CHECK =
- CommandManager.requirePermissionLevel(CommandManager.OWNERS_CHECK);
private final String addUsageMessage = "Usage: /clan admin add ";
private final String removeUsageMessage = "Usage: /clan admin remove ";
@@ -38,19 +33,19 @@ public AdminCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("admin")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("admin")
// add
- .then(CommandManager.literal("add")
- .requires(source -> hasPermission(source, "clantag.admin.add"))
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ .then(Commands.literal("add")
+ .requires(Permissions.require("clantag.admin.add", PermissionLevel.ADMINS))
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
for (String n : context.getSource().getServer().getPlayerNames()) {
builder.suggest(n);
}
return builder.buildFuture();
})
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
@@ -60,27 +55,27 @@ public LiteralArgumentBuilder build() {
.executes(this::executeAdd)
)
.executes(context -> {
- context.getSource().sendError(Text.literal(addUsageMessage));
+ context.getSource().sendFailure(Component.literal(addUsageMessage));
return 0;
})
)
.executes(context -> {
- context.getSource().sendError(Text.literal(addUsageMessage));
+ context.getSource().sendFailure(Component.literal(addUsageMessage));
return 0;
})
)
// remove
- .then(CommandManager.literal("remove")
- .requires(source -> hasPermission(source, "clantag.admin.remove"))
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ .then(Commands.literal("remove")
+ .requires(Permissions.require("clantag.admin.remove", PermissionLevel.ADMINS))
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
for (String n : context.getSource().getServer().getPlayerNames()) {
builder.suggest(n);
}
return builder.buildFuture();
})
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
@@ -90,27 +85,27 @@ public LiteralArgumentBuilder build() {
.executes(this::executeRemove)
)
.executes(context -> {
- context.getSource().sendError(Text.literal(removeUsageMessage));
+ context.getSource().sendFailure(Component.literal(removeUsageMessage));
return 0;
})
)
.executes(context -> {
- context.getSource().sendError(Text.literal(removeUsageMessage));
+ context.getSource().sendFailure(Component.literal(removeUsageMessage));
return 0;
})
)
// transfer
- .then(CommandManager.literal("transfer")
- .requires(source -> hasPermission(source, "clantag.admin.transfer"))
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ .then(Commands.literal("transfer")
+ .requires(Permissions.require("clantag.admin.transfer", PermissionLevel.ADMINS))
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
for (String n : context.getSource().getServer().getPlayerNames()) {
builder.suggest(n);
}
return builder.buildFuture();
})
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
@@ -120,43 +115,43 @@ public LiteralArgumentBuilder build() {
.executes(this::executeTransfer)
)
.executes(context -> {
- context.getSource().sendError(Text.literal(transferUsageMessage));
+ context.getSource().sendFailure(Component.literal(transferUsageMessage));
return 0;
})
)
.executes(context -> {
- context.getSource().sendError(Text.literal(transferUsageMessage));
+ context.getSource().sendFailure(Component.literal(transferUsageMessage));
return 0;
})
)
- .then(CommandManager.literal("rename")
- .requires(source -> hasPermission(source, "clantag.admin.rename"))
- .then(CommandManager.argument("clanName", StringArgumentType.string())
+ .then(Commands.literal("rename")
+ .requires(Permissions.require("clantag.admin.rename", PermissionLevel.ADMINS))
+ .then(Commands.argument("clanName", StringArgumentType.string())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
}
return builder.buildFuture();
})
- .then(CommandManager.argument("newClanName", StringArgumentType.greedyString())
+ .then(Commands.argument("newClanName", StringArgumentType.greedyString())
.executes(this::executeRename)
)
.executes(context -> {
- context.getSource().sendError(Text.literal(renameUsageMessage));
+ context.getSource().sendFailure(Component.literal(renameUsageMessage));
return 0;
})
)
.executes(context -> {
- context.getSource().sendError(Text.literal(renameUsageMessage));
+ context.getSource().sendFailure(Component.literal(renameUsageMessage));
return 0;
})
)
// delete (confirm)
- .then(CommandManager.literal("delete")
- .requires(source -> hasPermission(source, "clantag.admin.delete"))
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ .then(Commands.literal("delete")
+ .requires(Permissions.require("clantag.admin.delete", PermissionLevel.ADMINS))
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
@@ -166,76 +161,52 @@ public LiteralArgumentBuilder build() {
.executes(this::executeDelete)
)
.executes(context -> {
- context.getSource().sendError(Text.literal(deleteUsageMessage));
+ context.getSource().sendFailure(Component.literal(deleteUsageMessage));
return 0;
})
)
// reload
- .then(CommandManager.literal("reload")
- .requires(source -> hasPermission(source, "clantag.admin.reload"))
+ .then(Commands.literal("reload")
+ .requires(Permissions.require("clantag.admin.reload", PermissionLevel.ADMINS))
.executes(context -> {
boolean reloaded = clanManager.load();
if (reloaded) {
- context.getSource().sendFeedback(() -> Text.literal("Reloaded clans.json!"), true);
+ context.getSource().sendSuccess(() -> Component.literal("Reloaded clans.json!"), true);
} else {
- context.getSource().sendFeedback(() -> Text.literal("Failed to load or partially loaded clans.json! Manually inputted malformed data?"), true);
+ context.getSource().sendSuccess(() -> Component.literal("Failed to load or partially loaded clans.json! Manually inputted malformed data?"), true);
}
return 1;
})
)
// cache clear
- .then(CommandManager.literal("cache")
- .requires(source -> hasPermission(source, "clantag.admin.cache"))
- .then(CommandManager.literal("clear")
+ .then(Commands.literal("cache")
+ .requires(Permissions.require("clantag.admin.cache", PermissionLevel.ADMINS))
+ .then(Commands.literal("clear")
.executes(context -> {
MojangApi.clearCache();
- context.getSource().sendFeedback(
- () -> Text.literal("MojangAPI player cache cleared!"), true
+ context.getSource().sendSuccess(
+ () -> Component.literal("MojangAPI player cache cleared!"), true
);
return 1;
})
)
.executes(context -> {
- context.getSource().sendError(Text.literal(cacheUsageMessage));
+ context.getSource().sendFailure(Component.literal(cacheUsageMessage));
return 0;
})
)
// default response
.executes(context -> {
- context.getSource().sendError(Text.literal("Valid subcommands: add, remove, transfer, rename, delete, cache, reload"));
+ context.getSource().sendFailure(Component.literal("Valid subcommands: add, remove, transfer, rename, delete, cache, reload"));
return 0;
});
}
- private boolean hasPermission(ServerCommandSource source, String node) {
- if (!source.isExecutedByPlayer()) { // console/other source that is non-player
- return true;
- }
- ServerPlayerEntity player = source.getPlayer();
- if (player == null) return false;
- UUID playerUuid = player.getUuid();
-
- if (lpApi == null) {
- try {
- lpApi = LuckPermsProvider.get();
- } catch (IllegalStateException e) {
- // LP not ready yet, deny command
- return false;
- }
- }
-
- User user = lpApi.getUserManager().getUser(playerUuid);
-
- boolean hasPermissionNode = user != null && user.getCachedData().getPermissionData().checkPermission(node).asBoolean();
- boolean hasOwnerLevelOp = OWNER_CHECK.test(source); //fallback if they have no permissions
- return hasPermissionNode || hasOwnerLevelOp;
- }
-
- private int executeAdd(CommandContext context) {
+ private int executeAdd(CommandContext context) {
String clanName = StringArgumentType.getString(context, "clanName");
String playerName = StringArgumentType.getString(context, "playerName");
@@ -243,97 +214,97 @@ private int executeAdd(CommandContext context) {
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
getUuid(context, playerName).thenAccept(optPlayerName -> context.getSource().getServer().execute(() -> {
if (optPlayerName.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID playerUuid = optPlayerName.get();
if (clanManager.playerInAClan(playerUuid)) {
- context.getSource().sendError(Text.literal("Player already in a clan!"));
+ context.getSource().sendFailure(Component.literal("Player already in a clan!"));
return;
}
clanManager.addMember(clanName, playerUuid);
- context.getSource().sendFeedback(() -> Text.literal("Added " + playerName + " to clan " + clanName + "!"), true);
+ context.getSource().sendSuccess(() -> Component.literal("Added " + playerName + " to clan " + clanName + "!"), true);
}));
return 1;
}
- private int executeRemove(CommandContext context) {
+ private int executeRemove(CommandContext context) {
String clanName = StringArgumentType.getString(context, "clanName");
String playerName = StringArgumentType.getString(context, "playerName");
if (clanName == null || playerName == null) return 0;
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
getUuid(context, playerName).thenAccept(optPlayerUuid -> context.getSource().getServer().execute(() -> {
if (optPlayerUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID playerUuid = optPlayerUuid.get();
if (!clan.members().contains(playerUuid)) {
- context.getSource().sendError(Text.literal(playerName + " is not in clan " + clanName + "!"));
+ context.getSource().sendFailure(Component.literal(playerName + " is not in clan " + clanName + "!"));
return;
}
// prevent removing the leader accidentally
if (playerUuid.equals(clan.leader())) {
- context.getSource().sendError(Text.literal("Cannot remove the leader from their own clan! You may transfer ownership, or delete the clan instead."));
+ context.getSource().sendFailure(Component.literal("Cannot remove the leader from their own clan! You may transfer ownership, or delete the clan instead."));
return;
}
clanManager.removeMember(clanName, playerUuid);
- context.getSource().sendFeedback(() -> Text.literal("Removed " + playerName + " from clan " + clanName + "!"), true);
+ context.getSource().sendSuccess(() -> Component.literal("Removed " + playerName + " from clan " + clanName + "!"), true);
}));
return 1;
}
- private int executeTransfer(CommandContext context) {
+ private int executeTransfer(CommandContext context) {
String playerName = StringArgumentType.getString(context, "playerName");
String clanName = StringArgumentType.getString(context, "clanName");
if (playerName == null || clanName == null) return 0;
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
getUuid(context, playerName).thenAccept(optUuid ->
context.getSource().getServer().execute(() -> {
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
if (targetUuid.equals(clan.leader())) {
- context.getSource().sendError(Text.literal(playerName + " is already the leader of " + clanName + "!"));
+ context.getSource().sendFailure(Component.literal(playerName + " is already the leader of " + clanName + "!"));
return;
}
boolean success = clanManager.transferLeader(clanName, targetUuid);
if (!success) {
- context.getSource().sendError(Text.literal(playerName + " is not in " + clanName + "!"));
+ context.getSource().sendFailure(Component.literal(playerName + " is not in " + clanName + "!"));
return;
}
- context.getSource().sendFeedback(() -> Text.literal(
+ context.getSource().sendSuccess(() -> Component.literal(
"Successfully transferred leadership of " + clanName + " to " + playerName + "!"), true);
})
);
@@ -341,46 +312,46 @@ private int executeTransfer(CommandContext context) {
return 1;
}
- private int executeRename(CommandContext context) {
+ private int executeRename(CommandContext context) {
String oldClanName = StringArgumentType.getString(context, "clanName");
String newClanName = StringArgumentType.getString(context, "newClanName");
if (oldClanName == null || newClanName == null) return 0;
Clan oldClan = clanManager.getClan(oldClanName);
if (oldClan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
if (newClanName.contains(" ")) {
- context.getSource().sendError(Text.literal("Clan names must not contain spaces!"));
+ context.getSource().sendFailure(Component.literal("Clan names must not contain spaces!"));
return 0;
}
if (newClanName.length() < 3 || newClanName.length() > 16) {
- context.getSource().sendMessage(Text.literal("Warning: Proposed new clan name will override length limits!").formatted(Formatting.YELLOW));
+ context.getSource().sendSystemMessage(Component.literal("Warning: Proposed new clan name will override length limits!").withStyle(ChatFormatting.YELLOW));
}
boolean clanRenamed = clanManager.changeName(oldClanName, newClanName);
if (clanRenamed) {
- context.getSource().sendFeedback(() -> Text.literal("Successfully renamed " + oldClanName + " to " + newClanName), true);
+ context.getSource().sendSuccess(() -> Component.literal("Successfully renamed " + oldClanName + " to " + newClanName), true);
return 1;
} else {
- context.getSource().sendError(Text.literal("Clan " + newClanName + " already exists, or " + newClanName + " isn't an allowed name!"));
+ context.getSource().sendFailure(Component.literal("Clan " + newClanName + " already exists, or " + newClanName + " isn't an allowed name!"));
return 0;
}
}
- private int executeDelete(CommandContext context) {
+ private int executeDelete(CommandContext context) {
String clanName = StringArgumentType.getString(context, "clanName");
if (clanName == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
boolean successful = clanManager.deleteClan(clanName);
if (successful) {
- context.getSource().sendFeedback(() -> Text.literal("Deleted clan " + clanName + "!"), true);
+ context.getSource().sendSuccess(() -> Component.literal("Deleted clan " + clanName + "!"), true);
return 1;
} else {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
}
diff --git a/src/main/java/mnfu/clantag/commands/CommandUtils.java b/src/main/java/mnfu/clantag/commands/CommandUtils.java
index 2319c3b..9d53721 100644
--- a/src/main/java/mnfu/clantag/commands/CommandUtils.java
+++ b/src/main/java/mnfu/clantag/commands/CommandUtils.java
@@ -5,11 +5,11 @@
import mnfu.clantag.MojangApi;
import mnfu.clantag.PersistentPlayerCache;
import net.minecraft.server.MinecraftServer;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Style;
-import net.minecraft.text.Text;
-import net.minecraft.text.TextColor;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextColor;
import java.util.Optional;
import java.util.UUID;
@@ -23,7 +23,7 @@ private CommandUtils() {} // prevent instantiation
*
* @return an {@link Optional} containing the player's name if found, otherwise {@link Optional#empty()}
*/
- public static CompletableFuture> getPlayerName(CommandContext context, UUID uuid) {
+ public static CompletableFuture> getPlayerName(CommandContext context, UUID uuid) {
return getPlayerName(context.getSource().getServer(), uuid);
}
@@ -32,7 +32,7 @@ public static CompletableFuture> getPlayerName(CommandContext> getUuid(CommandContext context, String playerName) {
+ public static CompletableFuture> getUuid(CommandContext context, String playerName) {
return getUuid(context.getSource().getServer(), playerName);
}
@@ -42,7 +42,7 @@ public static CompletableFuture> getUuid(CommandContext> getPlayerName(MinecraftServer server, UUID uuid) {
- ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid);
+ ServerPlayer player = server.getPlayerList().getPlayer(uuid);
if (player != null) return CompletableFuture.completedFuture(Optional.of(player.getName().getString()));
return CompletableFuture.supplyAsync(() -> {
@@ -69,8 +69,8 @@ public static CompletableFuture> getPlayerName(MinecraftServer
* @return an {@link Optional} containing the UUID if found, otherwise {@link Optional#empty()}
*/
public static CompletableFuture> getUuid(MinecraftServer server, String playerName) {
- ServerPlayerEntity player = server.getPlayerManager().getPlayer(playerName);
- if (player != null) return CompletableFuture.completedFuture(Optional.of(player.getUuid()));
+ ServerPlayer player = server.getPlayerList().getPlayerByName(playerName);
+ if (player != null) return CompletableFuture.completedFuture(Optional.of(player.getUUID()));
return CompletableFuture.supplyAsync(() -> {
PersistentPlayerCache cache = PersistentPlayerCache.getInstance();
@@ -87,9 +87,9 @@ public static CompletableFuture> getUuid(MinecraftServer server,
});
}
- public static Text getColoredClanName(Clan clan) {
- TextColor textColor = TextColor.parse(clan.hexColor()).getOrThrow();
- return Text.literal(clan.name())
+ public static Component getColoredClanName(Clan clan) {
+ TextColor textColor = TextColor.parseColor(clan.hexColor()).getOrThrow();
+ return Component.literal(clan.name())
.setStyle(Style.EMPTY.withColor(textColor));
}
}
diff --git a/src/main/java/mnfu/clantag/commands/CreateCommand.java b/src/main/java/mnfu/clantag/commands/CreateCommand.java
index a2cb17a..7cae22c 100644
--- a/src/main/java/mnfu/clantag/commands/CreateCommand.java
+++ b/src/main/java/mnfu/clantag/commands/CreateCommand.java
@@ -3,10 +3,10 @@
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import com.mojang.brigadier.arguments.StringArgumentType;
@@ -20,23 +20,23 @@ public CreateCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("create")
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("create")
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.executes(this::executeCreate)
);
}
- private int executeCreate(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeCreate(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can create clans!"));
+ context.getSource().sendFailure(Component.literal("Only players can create clans!"));
return 0;
}
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
if (clanManager.playerInAClan(executorUuid)) {
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"You must leave or disband your current clan before creating a new one."
));
return 0;
@@ -44,19 +44,19 @@ private int executeCreate(CommandContext context) {
String clanName = StringArgumentType.getString(context, "clanName");
if (clanName.contains(" ")) {
- context.getSource().sendError(Text.literal("Clan names must not contain spaces!"));
+ context.getSource().sendFailure(Component.literal("Clan names must not contain spaces!"));
return 0;
}
if (clanName.length() < 3 || clanName.length() > 16) {
- context.getSource().sendError(Text.literal("Clan names must be 3-16 characters in length!"));
+ context.getSource().sendFailure(Component.literal("Clan names must be 3-16 characters in length!"));
return 0;
}
boolean clanCreated = clanManager.createClan(clanName, executorUuid);
if (clanCreated) {
- executor.sendMessage(Text.literal("Clan " + clanName + " created!"), false);
+ context.getSource().sendSystemMessage(Component.literal("Clan " + clanName + " created!"));
} else {
- context.getSource().sendError(Text.literal("Clan " + clanName + " already exists, or " + clanName + " isn't an allowed name!"));
+ context.getSource().sendFailure(Component.literal("Clan " + clanName + " already exists, or " + clanName + " isn't an allowed name!"));
}
return 1;
diff --git a/src/main/java/mnfu/clantag/commands/DemoteCommand.java b/src/main/java/mnfu/clantag/commands/DemoteCommand.java
index 45eed2e..63dfa1b 100644
--- a/src/main/java/mnfu/clantag/commands/DemoteCommand.java
+++ b/src/main/java/mnfu/clantag/commands/DemoteCommand.java
@@ -5,10 +5,10 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -22,13 +22,13 @@ public DemoteCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("demote")
- .then(CommandManager.argument("playerName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("demote")
+ .then(Commands.argument("playerName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
+ ServerPlayer player = context.getSource().getPlayer();
if (player == null) return builder.buildFuture();
- Clan clan = clanManager.getPlayerClan(player.getUuid());
+ Clan clan = clanManager.getPlayerClan(player.getUUID());
if (clan == null) return builder.buildFuture();
CompletableFuture>[] nameFutures = clan.members().stream()
.filter(uuid -> !uuid.equals(clan.leader()))
@@ -41,45 +41,45 @@ public LiteralArgumentBuilder build() {
})
.executes(this::executeDemote))
.executes(context -> {
- context.getSource().sendError(Text.literal("Usage: /clan demote "));
+ context.getSource().sendFailure(Component.literal("Usage: /clan demote "));
return 1;
});
}
- private int executeDemote(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeDemote(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (clan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return 0;
}
- if (!clan.leader().equals(executor.getUuid())) {
- context.getSource().sendError(Text.literal("You must be a clan leader to use this command!"));
+ if (!clan.leader().equals(executor.getUUID())) {
+ context.getSource().sendFailure(Component.literal("You must be a clan leader to use this command!"));
return 0;
}
String targetName = StringArgumentType.getString(context, "playerName");
getUuid(context, targetName).thenAccept(optUuid -> context.getSource().getServer().execute(() -> {
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
if (targetUuid.equals(clan.leader())) {
- context.getSource().sendError(Text.literal("You cannot demote yourself!"));
+ context.getSource().sendFailure(Component.literal("You cannot demote yourself!"));
return;
}
if (!clan.members().contains(targetUuid)) {
- context.getSource().sendError(Text.literal(targetName + " is not in your clan!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is not in your clan!"));
return;
}
if (!clan.officers().contains(targetUuid)) {
- context.getSource().sendError(Text.literal(targetName + " is not an Officer!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is not an Officer!"));
return;
}
clanManager.removeOfficer(clan.name(), targetUuid);
- context.getSource().sendMessage(Text.literal("Demoted " + targetName + " from Officer!"));
+ context.getSource().sendSystemMessage(Component.literal("Demoted " + targetName + " from Officer!"));
}));
return 1;
}
diff --git a/src/main/java/mnfu/clantag/commands/DisbandCommand.java b/src/main/java/mnfu/clantag/commands/DisbandCommand.java
index 4abde92..4976cee 100644
--- a/src/main/java/mnfu/clantag/commands/DisbandCommand.java
+++ b/src/main/java/mnfu/clantag/commands/DisbandCommand.java
@@ -4,10 +4,10 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
@@ -18,39 +18,39 @@ public DisbandCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("disband")
- .then(CommandManager.literal("confirm")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("disband")
+ .then(Commands.literal("confirm")
.executes(context -> executeDisband(context, true))
)
.executes(context -> executeDisband(context, false));
}
- private int executeDisband(CommandContext context, boolean confirm) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeDisband(CommandContext context, boolean confirm) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can disband clans!"));
+ context.getSource().sendFailure(Component.literal("Only players can disband clans!"));
return 0;
}
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan clan = clanManager.getPlayerClan(executorUuid);
if (clan == null) {
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"You must be in a clan to disband one!"
));
return 0;
}
if (!clan.leader().equals(executorUuid)) {
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"You must be a clan leader to disband a clan!"
));
return 0;
}
if (!confirm) {
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"Are you sure you want to do this? If so, run: /clan disband confirm"
));
return 1;
@@ -59,11 +59,11 @@ private int executeDisband(CommandContext context, boolean
// now we know they're the leader of their clan, and they've confirmed.
boolean success = clanManager.deleteClan(clan.name());
if (success) {
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"Clan " + clan.name() + " has been disbanded."
));
} else {
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"Clan " + clan.name() + " does not exist."
));
}
diff --git a/src/main/java/mnfu/clantag/commands/HelpCommand.java b/src/main/java/mnfu/clantag/commands/HelpCommand.java
index cc77e83..e7542e5 100644
--- a/src/main/java/mnfu/clantag/commands/HelpCommand.java
+++ b/src/main/java/mnfu/clantag/commands/HelpCommand.java
@@ -2,19 +2,19 @@
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.text.ClickEvent;
-import net.minecraft.text.HoverEvent;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Text;
-import net.minecraft.util.Formatting;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.network.chat.ClickEvent;
+import net.minecraft.network.chat.HoverEvent;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Component;
+import net.minecraft.ChatFormatting;
public class HelpCommand {
- private final MutableText generalMessage;
- private final MutableText manageMessage;
- private final MutableText adminMessage;
+ private final MutableComponent generalMessage;
+ private final MutableComponent manageMessage;
+ private final MutableComponent adminMessage;
public HelpCommand() {
generalMessage = buildGeneralMessage();
@@ -22,111 +22,111 @@ public HelpCommand() {
adminMessage = buildAdminMessage();
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("help")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("help")
.executes(this::executeGeneral) // default to "general commands" page
- .then(CommandManager.literal("general").executes(this::executeGeneral))
- .then(CommandManager.literal("manage").executes(this::executeManage))
- .then(CommandManager.literal("admin").executes(this::executeAdmin));
+ .then(Commands.literal("general").executes(this::executeGeneral))
+ .then(Commands.literal("manage").executes(this::executeManage))
+ .then(Commands.literal("admin").executes(this::executeAdmin));
}
// HELP PAGE FOR GENERAL COMMANDS
- public int executeGeneral(CommandContext context) {
- context.getSource().sendMessage(generalMessage);
+ public int executeGeneral(CommandContext context) {
+ context.getSource().sendSystemMessage(generalMessage);
return 1;
}
// HELP PAGE FOR MANAGEMENT COMMANDS
- private int executeManage(CommandContext context) {
- context.getSource().sendMessage(manageMessage);
+ private int executeManage(CommandContext context) {
+ context.getSource().sendSystemMessage(manageMessage);
return 1;
}
// HELP PAGE FOR ADMIN COMMANDS
- private int executeAdmin(CommandContext context) {
- context.getSource().sendMessage(adminMessage);
+ private int executeAdmin(CommandContext context) {
+ context.getSource().sendSystemMessage(adminMessage);
return 1;
}
- public MutableText buildGeneralMessage () {
- MutableText message = Text.empty();
- message.append(Text.literal("[ General Commands ]").formatted(Formatting.WHITE)).append("\n");
- message.append(Text.literal("/clan help [pageName]").formatted(Formatting.YELLOW)).append(" - Shows a help menu page (defaults to this page if [pageName] isn't chosen)").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan create ").formatted(Formatting.YELLOW)).append(" - Creates a clan if it doesn't already exist").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan info [name|player] ").formatted(Formatting.YELLOW)).append(" - Shows info about a clan, defaults to your clan if no arguments given").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan invites").formatted(Formatting.YELLOW)).append(" - Displays your current clan invites to accept/decline").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan accept ").formatted(Formatting.YELLOW)).append(" - Accepts a clan invite").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan decline ").formatted(Formatting.YELLOW)).append(" - Declines a clan invite").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan join ").formatted(Formatting.YELLOW)).append(" - Joins a clan if it is open").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan leave").formatted(Formatting.YELLOW)).append(" - Leaves your current clan. If you are the last remaining member, it disbands the clan as well").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("[Management Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ public MutableComponent buildGeneralMessage () {
+ MutableComponent message = Component.empty();
+ message.append(Component.literal("[ General Commands ]").withStyle(ChatFormatting.WHITE)).append("\n");
+ message.append(Component.literal("/clan help [pageName]").withStyle(ChatFormatting.YELLOW)).append(" - Shows a help menu page (defaults to this page if [pageName] isn't chosen)").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan create ").withStyle(ChatFormatting.YELLOW)).append(" - Creates a clan if it doesn't already exist").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan info [name|player] ").withStyle(ChatFormatting.YELLOW)).append(" - Shows info about a clan, defaults to your clan if no arguments given").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan invites").withStyle(ChatFormatting.YELLOW)).append(" - Displays your current clan invites to accept/decline").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan accept ").withStyle(ChatFormatting.YELLOW)).append(" - Accepts a clan invite").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan decline ").withStyle(ChatFormatting.YELLOW)).append(" - Declines a clan invite").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan join ").withStyle(ChatFormatting.YELLOW)).append(" - Joins a clan if it is open").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan leave").withStyle(ChatFormatting.YELLOW)).append(" - Leaves your current clan. If you are the last remaining member, it disbands the clan as well").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("[Management Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help manage"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view management commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view management commands"))))
);
- message.append(Text.literal(" | ").formatted(Formatting.GRAY));
- message.append(Text.literal("[Admin Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ message.append(Component.literal(" | ").withStyle(ChatFormatting.GRAY));
+ message.append(Component.literal("[Admin Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help admin"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view admin commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view admin commands"))))
);
message.append("\n");
return message;
}
- public MutableText buildManageMessage () {
- MutableText message = Text.empty();
- message.append(Text.literal("[ Management Commands ]").formatted(Formatting.WHITE)).append("\n");
- message.append(Text.literal("/clan invite ").formatted(Formatting.YELLOW)).append(" - Invites to your clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan kick ").formatted(Formatting.YELLOW)).append(" - Kicks from your clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan promote ").formatted(Formatting.YELLOW)).append(" - Promotes a player in the clan rank hierarchy").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan demote ").formatted(Formatting.YELLOW)).append(" - Demotes a player in the clan rank hierarchy").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan disband [confirm]").formatted(Formatting.YELLOW)).append(" - Facilitates the deletion of your clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan set color ").formatted(Formatting.YELLOW)).append(" - Sets your clan color (supports \"WHITE\" or #FFFFFF or FFFFFF formats)").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan set access [open|invite_only|toggle]").formatted(Formatting.YELLOW)).append(" - Sets your clan access to open or invite only").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan set name ").formatted(Formatting.YELLOW)).append(" - Sets your clan name to if it is available").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan transfer ").formatted(Formatting.YELLOW)).append(" - Transfers clan ownership to ").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("[General Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ public MutableComponent buildManageMessage () {
+ MutableComponent message = Component.empty();
+ message.append(Component.literal("[ Management Commands ]").withStyle(ChatFormatting.WHITE)).append("\n");
+ message.append(Component.literal("/clan invite ").withStyle(ChatFormatting.YELLOW)).append(" - Invites to your clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan kick ").withStyle(ChatFormatting.YELLOW)).append(" - Kicks from your clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan promote ").withStyle(ChatFormatting.YELLOW)).append(" - Promotes a player in the clan rank hierarchy").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan demote ").withStyle(ChatFormatting.YELLOW)).append(" - Demotes a player in the clan rank hierarchy").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan disband [confirm]").withStyle(ChatFormatting.YELLOW)).append(" - Facilitates the deletion of your clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan set color ").withStyle(ChatFormatting.YELLOW)).append(" - Sets your clan color (supports \"WHITE\" or #FFFFFF or FFFFFF formats)").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan set access [open|invite_only|toggle]").withStyle(ChatFormatting.YELLOW)).append(" - Sets your clan access to open or invite only").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan set name ").withStyle(ChatFormatting.YELLOW)).append(" - Sets your clan name to if it is available").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan transfer ").withStyle(ChatFormatting.YELLOW)).append(" - Transfers clan ownership to ").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("[General Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help general"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view general commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view general commands"))))
);
- message.append(Text.literal(" | ").formatted(Formatting.GRAY));
- message.append(Text.literal("[Admin Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ message.append(Component.literal(" | ").withStyle(ChatFormatting.GRAY));
+ message.append(Component.literal("[Admin Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help admin"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view admin commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view admin commands"))))
);
message.append("\n");
return message;
}
- public MutableText buildAdminMessage () {
- MutableText message = Text.empty();
- message.append(Text.literal("[ Admin Commands ]").formatted(Formatting.WHITE)).append("\n");
- message.append(Text.literal("/clan admin add ").formatted(Formatting.YELLOW)).append(" - Adds to a clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin remove ").formatted(Formatting.YELLOW)).append(" - Removes from a clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin delete ").formatted(Formatting.YELLOW)).append(" - Deletes a clan").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin rename <\"clanName\"> ").formatted(Formatting.YELLOW)).append(" - Renames a clan (Overrides length limitations)").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin transfer ").formatted(Formatting.YELLOW)).append(" - Transfers clan ownership to ").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin reload").formatted(Formatting.YELLOW)).append(" - Reloads clans.json from disk").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("/clan admin cache clear").formatted(Formatting.YELLOW)).append(" - Clears the MojangAPI Cache").formatted(Formatting.GRAY).append("\n");
- message.append(Text.literal("[General Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ public MutableComponent buildAdminMessage () {
+ MutableComponent message = Component.empty();
+ message.append(Component.literal("[ Admin Commands ]").withStyle(ChatFormatting.WHITE)).append("\n");
+ message.append(Component.literal("/clan admin add ").withStyle(ChatFormatting.YELLOW)).append(" - Adds to a clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin remove ").withStyle(ChatFormatting.YELLOW)).append(" - Removes from a clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin delete ").withStyle(ChatFormatting.YELLOW)).append(" - Deletes a clan").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin rename <\"clanName\"> ").withStyle(ChatFormatting.YELLOW)).append(" - Renames a clan (Overrides length limitations)").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin transfer ").withStyle(ChatFormatting.YELLOW)).append(" - Transfers clan ownership to ").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin reload").withStyle(ChatFormatting.YELLOW)).append(" - Reloads clans.json from disk").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("/clan admin cache clear").withStyle(ChatFormatting.YELLOW)).append(" - Clears the MojangAPI Cache").withStyle(ChatFormatting.GRAY).append("\n");
+ message.append(Component.literal("[General Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help general"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view general commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view general commands"))))
);
- message.append(Text.literal(" | ").formatted(Formatting.GRAY));
- message.append(Text.literal("[Management Help Page]")
- .styled(style -> style
- .withColor(Formatting.GOLD)
+ message.append(Component.literal(" | ").withStyle(ChatFormatting.GRAY));
+ message.append(Component.literal("[Management Help Page]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GOLD)
.withClickEvent(new ClickEvent.RunCommand("/clan help manage"))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to view management commands"))))
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to view management commands"))))
);
message.append("\n");
return message;
diff --git a/src/main/java/mnfu/clantag/commands/InfoCommand.java b/src/main/java/mnfu/clantag/commands/InfoCommand.java
index 5fc9221..b0f4306 100644
--- a/src/main/java/mnfu/clantag/commands/InfoCommand.java
+++ b/src/main/java/mnfu/clantag/commands/InfoCommand.java
@@ -5,14 +5,14 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Style;
-import net.minecraft.text.Text;
-import net.minecraft.text.TextColor;
-import net.minecraft.util.Formatting;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextColor;
+import net.minecraft.ChatFormatting;
import java.util.Collection;
import java.util.LinkedHashSet;
@@ -30,11 +30,11 @@ public InfoCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("info")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("info")
.executes(this::executeForSelf)
- .then(CommandManager.literal("name")
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ .then(Commands.literal("name")
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String canonicalName : clanManager.getAllClansCanonicalNames()) {
builder.suggest(canonicalName);
@@ -44,10 +44,10 @@ public LiteralArgumentBuilder build() {
.executes(this::executeForClanName)
)
)
- .then(CommandManager.literal("player")
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ .then(Commands.literal("player")
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
- Collection onlinePlayers = context.getSource().getPlayerNames();
+ Collection onlinePlayers = context.getSource().getOnlinePlayerNames();
onlinePlayers.forEach(builder::suggest);
return builder.buildFuture();
})
@@ -56,17 +56,17 @@ public LiteralArgumentBuilder build() {
);
}
- private int executeForSelf(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeForSelf(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) { // not a player if null, assume console
- context.getSource().sendError(Text.literal("You are not a player, so you must specify a clan name."));
+ context.getSource().sendFailure(Component.literal("You are not a player, so you must specify a clan name."));
return 0;
}
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (clan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
@@ -74,12 +74,12 @@ private int executeForSelf(CommandContext context) {
return 1;
}
- private int executeForClanName(CommandContext context) {
+ private int executeForClanName(CommandContext context) {
String clanName = StringArgumentType.getString(context, "clanName");
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
@@ -87,19 +87,19 @@ private int executeForClanName(CommandContext context) {
return 1;
}
- private int executeForPlayer(CommandContext context) {
+ private int executeForPlayer(CommandContext context) {
String playerName = StringArgumentType.getString(context, "playerName");
getUuid(context, playerName).thenAccept(optUuid -> {
UUID playerUuid = optUuid.orElse(null);
if (playerUuid == null) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
Clan clan = clanManager.getPlayerClan(playerUuid);
if (clan == null) {
- context.getSource().sendError(Text.literal("This player is not in a clan."));
+ context.getSource().sendFailure(Component.literal("This player is not in a clan."));
return;
}
@@ -109,83 +109,83 @@ private int executeForPlayer(CommandContext context) {
return 1;
}
- private void displayClanInfo(CommandContext context, Clan clan) {
- MutableText message = Text.empty();
- TextColor clanColor = TextColor.parse(clan.hexColor()).getOrThrow();
+ private void displayClanInfo(CommandContext context, Clan clan) {
+ MutableComponent message = Component.empty();
+ TextColor clanColor = TextColor.parseColor(clan.hexColor()).getOrThrow();
- message.append(Text.literal(clan.name())
+ message.append(Component.literal(clan.name())
.setStyle(Style.EMPTY.withColor(clanColor)));
- message.append(Text.literal(" (" + clan.name() + ")").formatted(Formatting.GRAY))
+ message.append(Component.literal(" (" + clan.name() + ")").withStyle(ChatFormatting.GRAY))
.append("\n");
getPlayerName(context, clan.leader()).thenAccept(optLeaderName -> {
String leaderName = optLeaderName.orElse("Unknown Player");
- message.append(Text.literal("Leader: ").formatted(Formatting.WHITE))
- .append(Text.literal(leaderName).formatted(Formatting.GOLD))
+ message.append(Component.literal("Leader: ").withStyle(ChatFormatting.WHITE))
+ .append(Component.literal(leaderName).withStyle(ChatFormatting.GOLD))
.append("\n");
formatPlayerList(context, clan.officers(), clan.leader(), clan.officers()).thenAccept(officersText -> {
if (!clan.officers().isEmpty()) {
- message.append(Text.literal("Officers: ").formatted(Formatting.WHITE))
+ message.append(Component.literal("Officers: ").withStyle(ChatFormatting.WHITE))
.append(officersText)
.append("\n");
}
formatPlayerList(context, clan.members(), clan.leader(), clan.officers()).thenAccept(membersText -> {
- message.append(Text.literal("Members: ").formatted(Formatting.WHITE))
+ message.append(Component.literal("Members: ").withStyle(ChatFormatting.WHITE))
.append(membersText)
.append("\n");
- message.append(Text.literal("Color: ").formatted(Formatting.WHITE));
+ message.append(Component.literal("Color: ").withStyle(ChatFormatting.WHITE));
MinecraftColor color = MinecraftColor.fromColor(
Integer.parseInt(clan.hexColor().substring(1), 16)
);
if (color != null) {
- message.append(Text.literal(color.getDisplayName())
+ message.append(Component.literal(color.getDisplayName())
.setStyle(Style.EMPTY.withColor(clanColor)));
} else {
- message.append(Text.literal(clan.hexColor())
+ message.append(Component.literal(clan.hexColor())
.setStyle(Style.EMPTY.withColor(clanColor)));
}
- message.append(", Access: ").formatted(Formatting.WHITE);
- message.append(Text.literal(clan.isClosed() ? "Invite Only" : "Open")
- .formatted(clan.isClosed() ? Formatting.RED : Formatting.GREEN));
+ message.append(", Access: ").withStyle(ChatFormatting.WHITE);
+ message.append(Component.literal(clan.isClosed() ? "Invite Only" : "Open")
+ .withStyle(clan.isClosed() ? ChatFormatting.RED : ChatFormatting.GREEN));
- context.getSource().getServer().execute(() -> context.getSource().sendMessage(message));
+ context.getSource().getServer().execute(() -> context.getSource().sendSystemMessage(message));
});
});
});
}
- private CompletableFuture formatPlayerList(CommandContext context,
- LinkedHashSet uuids,
- UUID leaderUuid,
- LinkedHashSet officerUuids) {
- List> futures = uuids.stream()
+ private CompletableFuture formatPlayerList(CommandContext context,
+ LinkedHashSet uuids,
+ UUID leaderUuid,
+ LinkedHashSet officerUuids) {
+ List> futures = uuids.stream()
.map(uuid ->
getPlayerName(context, uuid).thenApply(optName -> {
String name = optName.orElse("Unknown Player");
- Formatting format;
+ ChatFormatting format;
if (uuid.equals(leaderUuid)) {
- format = Formatting.GOLD;
+ format = ChatFormatting.GOLD;
} else if (officerUuids.contains(uuid)) {
- format = Formatting.YELLOW;
+ format = ChatFormatting.YELLOW;
} else {
- format = Formatting.GRAY;
+ format = ChatFormatting.GRAY;
}
- return Text.literal(name).formatted(format);
+ return Component.literal(name).withStyle(format);
})
)
.toList();
return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new))
.thenApply(v -> {
- MutableText list = Text.empty();
+ MutableComponent list = Component.empty();
for (int i = 0; i < futures.size(); i++) {
list.append(futures.get(i).join());
if (i < futures.size() - 1) {
- list.append(Text.literal(", ").formatted(Formatting.GRAY));
+ list.append(Component.literal(", ").withStyle(ChatFormatting.GRAY));
}
}
return list;
diff --git a/src/main/java/mnfu/clantag/commands/InviteCommand.java b/src/main/java/mnfu/clantag/commands/InviteCommand.java
index 5186c91..e2bd553 100644
--- a/src/main/java/mnfu/clantag/commands/InviteCommand.java
+++ b/src/main/java/mnfu/clantag/commands/InviteCommand.java
@@ -5,17 +5,17 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.PlayerManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.ClickEvent;
-import net.minecraft.text.HoverEvent;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Style;
-import net.minecraft.text.Text;
-import net.minecraft.text.TextColor;
-import net.minecraft.util.Formatting;
+import net.minecraft.server.players.PlayerList;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.ClickEvent;
+import net.minecraft.network.chat.HoverEvent;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextColor;
+import net.minecraft.ChatFormatting;
import java.util.Collection;
import java.util.Set;
@@ -30,24 +30,24 @@ public InviteCommand(ClanManager clanManager, InviteManager inviteManager) {
this.inviteManager = inviteManager;
}
- public LiteralArgumentBuilder buildInvite() {
- return CommandManager.literal("invite")
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ public LiteralArgumentBuilder buildInvite() {
+ return Commands.literal("invite")
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
- Collection onlinePlayers = context.getSource().getPlayerNames();
+ Collection onlinePlayers = context.getSource().getOnlinePlayerNames();
onlinePlayers.forEach(builder::suggest);
return builder.buildFuture();
})
.executes(this::executeInvite));
}
- public LiteralArgumentBuilder buildAccept() {
- return CommandManager.literal("accept")
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder buildAccept() {
+ return Commands.literal("accept")
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, suggestionsBuilder) -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
+ ServerPlayer player = context.getSource().getPlayer();
if (player != null) {
- Set invites = inviteManager.getInvites(player.getUuid());
+ Set invites = inviteManager.getInvites(player.getUUID());
for (String clanName : invites) {
suggestionsBuilder.suggest(clanName);
}
@@ -57,13 +57,13 @@ public LiteralArgumentBuilder buildAccept() {
.executes(this::executeAccept));
}
- public LiteralArgumentBuilder buildDecline() {
- return CommandManager.literal("decline")
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder buildDecline() {
+ return Commands.literal("decline")
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, suggestionsBuilder) -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
+ ServerPlayer player = context.getSource().getPlayer();
if (player != null) {
- Set invites = inviteManager.getInvites(player.getUuid());
+ Set invites = inviteManager.getInvites(player.getUUID());
for (String clanName : invites) {
suggestionsBuilder.suggest(clanName);
}
@@ -73,28 +73,28 @@ public LiteralArgumentBuilder buildDecline() {
.executes(this::executeDecline));
}
- public LiteralArgumentBuilder buildInvites() {
- return CommandManager.literal("invites")
+ public LiteralArgumentBuilder buildInvites() {
+ return Commands.literal("invites")
.executes(this::executeListInvites);
}
- private int executeInvite(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeInvite(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can send invites!"));
+ context.getSource().sendFailure(Component.literal("Only players can send invites!"));
return 0;
}
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan executorClan = clanManager.getPlayerClan(executorUuid);
if (executorClan == null) {
- context.getSource().sendError(Text.literal("You must be in a clan to invite players!"));
+ context.getSource().sendFailure(Component.literal("You must be in a clan to invite players!"));
return 0;
}
if (!executorClan.leader().equals(executorUuid) && !executorClan.officers().contains(executorUuid)) {
- context.getSource().sendError(Text.literal("You are not the leader or an officer of a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not the leader or an officer of a clan!"));
return 0;
}
@@ -102,197 +102,197 @@ private int executeInvite(CommandContext context) {
CommandUtils.getUuid(context, targetName).thenAccept(optUuid -> context.getSource().getServer().execute(() -> {
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
- if (targetUuid.equals(executor.getUuid())) {
- context.getSource().sendError(Text.literal("You cannot invite yourself!"));
+ if (targetUuid.equals(executor.getUUID())) {
+ context.getSource().sendFailure(Component.literal("You cannot invite yourself!"));
return;
}
Clan targetClan = clanManager.getPlayerClan(targetUuid);
if (targetClan != null) {
- context.getSource().sendError(Text.literal(targetName + " is already in a clan!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is already in a clan!"));
return;
}
if (inviteManager.hasInvite(targetUuid, executorClan.name())) {
- context.getSource().sendError(Text.literal(targetName + " already has a pending invite to " + executorClan.name() + "!"));
+ context.getSource().sendFailure(Component.literal(targetName + " already has a pending invite to " + executorClan.name() + "!"));
return;
}
inviteManager.addInvite(targetUuid, executorClan.name());
- context.getSource().sendMessage(Text.literal("Invited " + targetName + " to " + executorClan.name() + "!"));
+ context.getSource().sendSystemMessage(Component.literal("Invited " + targetName + " to " + executorClan.name() + "!"));
- ServerPlayerEntity targetPlayer = context.getSource().getServer()
- .getPlayerManager()
+ ServerPlayer targetPlayer = context.getSource().getServer()
+ .getPlayerList()
.getPlayer(targetUuid);
if (targetPlayer != null) {
- MutableText inviteMessage = Text.literal("You've been invited to join ")
- .formatted(Formatting.YELLOW);
+ MutableComponent inviteMessage = Component.literal("You've been invited to join ")
+ .withStyle(ChatFormatting.YELLOW);
- inviteMessage.append(Text.literal(executorClan.name())
- .setStyle(Style.EMPTY.withColor(TextColor.parse(executorClan.hexColor()).getOrThrow())));
+ inviteMessage.append(Component.literal(executorClan.name())
+ .setStyle(Style.EMPTY.withColor(TextColor.parseColor(executorClan.hexColor()).getOrThrow())));
- inviteMessage.append(Text.literal("! ").formatted(Formatting.YELLOW));
+ inviteMessage.append(Component.literal("! ").withStyle(ChatFormatting.YELLOW));
- MutableText acceptButton = Text.literal("[Accept]")
- .styled(style -> style
- .withColor(Formatting.GREEN)
+ MutableComponent acceptButton = Component.literal("[Accept]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GREEN)
.withClickEvent(new ClickEvent.RunCommand("/clan accept " + executorClan.name()))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to accept"))));
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to accept"))));
inviteMessage.append(acceptButton);
- inviteMessage.append(Text.literal(" "));
+ inviteMessage.append(Component.literal(" "));
- MutableText declineButton = Text.literal("[Decline]")
- .styled(style -> style
- .withColor(Formatting.RED)
+ MutableComponent declineButton = Component.literal("[Decline]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.RED)
.withClickEvent(new ClickEvent.RunCommand("/clan decline " + executorClan.name()))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to decline"))));
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to decline"))));
inviteMessage.append(declineButton);
- targetPlayer.sendMessage(inviteMessage, false);
+ targetPlayer.sendSystemMessage(inviteMessage);
}
}));
return 1;
}
- private int executeAccept(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeAccept(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can accept invites!"));
+ context.getSource().sendFailure(Component.literal("Only players can accept invites!"));
return 0;
}
String clanName = StringArgumentType.getString(context, "clanName");
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan currentClan = clanManager.getPlayerClan(executorUuid);
if (currentClan != null) {
- context.getSource().sendError(Text.literal("You are already in a clan! Leave your current clan first."));
+ context.getSource().sendFailure(Component.literal("You are already in a clan! Leave your current clan first."));
return 0;
}
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
- context.getSource().sendError(Text.literal("That clan no longer exists!"));
+ context.getSource().sendFailure(Component.literal("That clan no longer exists!"));
inviteManager.removeInvite(executorUuid, clanName);
return 0;
}
if (!inviteManager.hasInvite(executorUuid, clan.name())) {
- context.getSource().sendError(Text.literal("You don't have an invite to " + clanName + "!"));
+ context.getSource().sendFailure(Component.literal("You don't have an invite to " + clanName + "!"));
return 0;
}
clanManager.addMember(clan.name(), executorUuid);
- PlayerManager pm = context.getSource().getServer().getPlayerManager();
+ PlayerList pm = context.getSource().getServer().getPlayerList();
for (UUID member : clan.members()) {
- ServerPlayerEntity player = pm.getPlayer(member);
+ ServerPlayer player = pm.getPlayer(member);
if (player != null) {
- player.sendMessage(Text.literal(executor.getName().getString() + " joined the clan!"));
+ player.sendSystemMessage(Component.literal(executor.getName().getString() + " joined the clan!"));
}
}
inviteManager.clearInvitesForPlayer(executorUuid);
- MutableText message = Text.literal("You've joined ")
- .formatted(Formatting.GREEN);
- message.append(Text.literal(clan.name())
- .setStyle(Style.EMPTY.withColor(TextColor.parse(clan.hexColor()).getOrThrow())));
- message.append(Text.literal("!").formatted(Formatting.GREEN));
+ MutableComponent message = Component.literal("You've joined ")
+ .withStyle(ChatFormatting.GREEN);
+ message.append(Component.literal(clan.name())
+ .setStyle(Style.EMPTY.withColor(TextColor.parseColor(clan.hexColor()).getOrThrow())));
+ message.append(Component.literal("!").withStyle(ChatFormatting.GREEN));
- context.getSource().sendMessage(message);
+ context.getSource().sendSystemMessage(message);
return 1;
}
- private int executeDecline(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeDecline(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can decline invites!"));
+ context.getSource().sendFailure(Component.literal("Only players can decline invites!"));
return 0;
}
String clanName = StringArgumentType.getString(context, "clanName");
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan clan = clanManager.getClan(clanName);
if (clan == null) {
// clean up stale invite even if the clan no longer exists
inviteManager.removeInvite(executorUuid, clanName);
- context.getSource().sendError(Text.literal("That clan no longer exists!"));
+ context.getSource().sendFailure(Component.literal("That clan no longer exists!"));
return 0;
}
if (!inviteManager.hasInvite(executorUuid, clan.name())) {
- context.getSource().sendError(Text.literal("You don't have an invite to " + clanName + "!"));
+ context.getSource().sendFailure(Component.literal("You don't have an invite to " + clanName + "!"));
return 0;
}
inviteManager.removeInvite(executorUuid, clan.name());
- context.getSource().sendMessage(Text.literal("Declined invite to " + clanName + ".").formatted(Formatting.GRAY));
+ context.getSource().sendSystemMessage(Component.literal("Declined invite to " + clanName + ".").withStyle(ChatFormatting.GRAY));
return 1;
}
- private int executeListInvites(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeListInvites(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can view invites!"));
+ context.getSource().sendFailure(Component.literal("Only players can view invites!"));
return 0;
}
- Set invites = inviteManager.getInvites(executor.getUuid());
+ Set invites = inviteManager.getInvites(executor.getUUID());
if (invites.isEmpty()) {
- context.getSource().sendMessage(Text.literal("You have no pending clan invites.").formatted(Formatting.GRAY));
+ context.getSource().sendSystemMessage(Component.literal("You have no pending clan invites.").withStyle(ChatFormatting.GRAY));
return 0;
}
- MutableText message = Text.literal("Pending clan invites:").formatted(Formatting.YELLOW);
+ MutableComponent message = Component.literal("Pending clan invites:").withStyle(ChatFormatting.YELLOW);
message.append("\n");
for (String clanName : invites) {
Clan clan = clanManager.getClan(clanName);
if (clan != null) {
- message.append(Text.literal("• "));
- message.append(Text.literal(clan.name())
- .setStyle(Style.EMPTY.withColor(TextColor.parse(clan.hexColor()).getOrThrow())));
+ message.append(Component.literal("• "));
+ message.append(Component.literal(clan.name())
+ .setStyle(Style.EMPTY.withColor(TextColor.parseColor(clan.hexColor()).getOrThrow())));
- message.append(Text.literal(" "));
+ message.append(Component.literal(" "));
- MutableText acceptButton = Text.literal("[Accept]")
- .styled(style -> style
- .withColor(Formatting.GREEN)
+ MutableComponent acceptButton = Component.literal("[Accept]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.GREEN)
.withClickEvent(new ClickEvent.RunCommand("/clan accept " + clanName))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to accept"))));
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to accept"))));
message.append(acceptButton);
- message.append(Text.literal(" "));
+ message.append(Component.literal(" "));
- MutableText declineButton = Text.literal("[Decline]")
- .styled(style -> style
- .withColor(Formatting.RED)
+ MutableComponent declineButton = Component.literal("[Decline]")
+ .withStyle(style -> style
+ .withColor(ChatFormatting.RED)
.withClickEvent(new ClickEvent.RunCommand("/clan decline " + clanName))
- .withHoverEvent(new HoverEvent.ShowText(Text.literal("Click to decline"))));
+ .withHoverEvent(new HoverEvent.ShowText(Component.literal("Click to decline"))));
message.append(declineButton);
message.append("\n");
}
}
- context.getSource().sendMessage(message);
+ context.getSource().sendSystemMessage(message);
return 1;
}
}
diff --git a/src/main/java/mnfu/clantag/commands/JoinCommand.java b/src/main/java/mnfu/clantag/commands/JoinCommand.java
index da5af17..084076d 100644
--- a/src/main/java/mnfu/clantag/commands/JoinCommand.java
+++ b/src/main/java/mnfu/clantag/commands/JoinCommand.java
@@ -5,15 +5,15 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.PlayerManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Style;
-import net.minecraft.text.Text;
-import net.minecraft.text.TextColor;
-import net.minecraft.util.Formatting;
+import net.minecraft.server.players.PlayerList;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextColor;
+import net.minecraft.ChatFormatting;
import java.util.Map;
import java.util.UUID;
@@ -25,9 +25,9 @@ public JoinCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("join")
- .then(CommandManager.argument("clanName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("join")
+ .then(Commands.argument("clanName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (Map.Entry entry : clanManager.getClansMap().entrySet()) {
if (!entry.getValue().isClosed()) builder.suggest(entry.getKey());
@@ -38,40 +38,40 @@ public LiteralArgumentBuilder build() {
);
}
- private int executeJoin(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeJoin(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (clan != null) {
- context.getSource().sendError(Text.literal("You must leave your current clan to join a new one!"));
+ context.getSource().sendFailure(Component.literal("You must leave your current clan to join a new one!"));
return 0;
}
String newClanName = StringArgumentType.getString(context, "clanName");
Clan newClan = clanManager.getClan(newClanName);
if (newClan == null) {
- context.getSource().sendError(Text.literal("Clan not found!"));
+ context.getSource().sendFailure(Component.literal("Clan not found!"));
return 0;
}
if (newClan.isClosed()) {
- context.getSource().sendError(Text.literal(newClan.name() + " is currently invite only!"));
+ context.getSource().sendFailure(Component.literal(newClan.name() + " is currently invite only!"));
return 0;
} else {
- clanManager.addMember(newClanName, executor.getUuid());
+ clanManager.addMember(newClanName, executor.getUUID());
- PlayerManager pm = context.getSource().getServer().getPlayerManager();
+ PlayerList pm = context.getSource().getServer().getPlayerList();
for (UUID member : newClan.members()) {
- ServerPlayerEntity player = pm.getPlayer(member);
+ ServerPlayer player = pm.getPlayer(member);
if (player != null) {
- player.sendMessage(Text.literal(executor.getName().getString() + " joined the clan!"));
+ player.sendSystemMessage(Component.literal(executor.getName().getString() + " joined the clan!"));
}
}
- MutableText message = Text.literal("You've joined ")
- .formatted(Formatting.GREEN);
- message.append(Text.literal(newClan.name())
- .setStyle(Style.EMPTY.withColor(TextColor.parse(newClan.hexColor()).getOrThrow())));
- message.append(Text.literal("!").formatted(Formatting.GREEN));
- context.getSource().sendMessage(message);
+ MutableComponent message = Component.literal("You've joined ")
+ .withStyle(ChatFormatting.GREEN);
+ message.append(Component.literal(newClan.name())
+ .setStyle(Style.EMPTY.withColor(TextColor.parseColor(newClan.hexColor()).getOrThrow())));
+ message.append(Component.literal("!").withStyle(ChatFormatting.GREEN));
+ context.getSource().sendSystemMessage(message);
return 1;
}
}
diff --git a/src/main/java/mnfu/clantag/commands/KickCommand.java b/src/main/java/mnfu/clantag/commands/KickCommand.java
index c6c4b17..9b3c596 100644
--- a/src/main/java/mnfu/clantag/commands/KickCommand.java
+++ b/src/main/java/mnfu/clantag/commands/KickCommand.java
@@ -4,11 +4,11 @@
import com.mojang.brigadier.arguments.StringArgumentType;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.PlayerManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.server.players.PlayerList;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -22,23 +22,23 @@ public KickCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("kick")
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("kick")
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return builder.buildFuture();
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (clan == null) return builder.buildFuture();
- boolean executorIsLeader = clan.leader().equals(executor.getUuid());
- boolean executorIsOfficer = clan.officers().contains(executor.getUuid());
+ boolean executorIsLeader = clan.leader().equals(executor.getUUID());
+ boolean executorIsOfficer = clan.officers().contains(executor.getUUID());
CompletableFuture>[] nameFutures = clan.members().stream()
.filter(targetUuid -> {
// always allow self for self-kick
- if (targetUuid.equals(executor.getUuid())) return true;
+ if (targetUuid.equals(executor.getUUID())) return true;
// leader can kick anyone
if (executorIsLeader) return true;
@@ -55,18 +55,18 @@ public LiteralArgumentBuilder build() {
})
.executes(context -> {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can kick members from clans!"));
+ context.getSource().sendFailure(Component.literal("Only players can kick members from clans!"));
return 0;
}
String targetName = StringArgumentType.getString(context, "playerName");
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan playerClan = clanManager.getPlayerClan(executorUuid);
if (playerClan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return 0;
}
@@ -74,7 +74,7 @@ public LiteralArgumentBuilder build() {
boolean executorIsClanOfficer = playerClan.officers().contains(executorUuid);
if (!executorIsClanLeader && !executorIsClanOfficer) {
- context.getSource().sendError(Text.literal("You are not the leader or an officer of a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not the leader or an officer of a clan!"));
return 0;
}
@@ -82,14 +82,14 @@ public LiteralArgumentBuilder build() {
getUuid(context, targetName).thenAccept(optUuid ->
context.getSource().getServer().execute(() -> { // back on main thread
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
if (!playerClan.members().contains(targetUuid)) {
- context.getSource().sendError(Text.literal(targetName + " is not in clan " + playerClan.name() + "!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is not in clan " + playerClan.name() + "!"));
return;
}
@@ -97,29 +97,29 @@ public LiteralArgumentBuilder build() {
if (targetUuid.equals(executorUuid)) {
if (playerClan.members().size() == 1) {
clanManager.deleteClan(playerClan.name());
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"You have kicked yourself from " + playerClan.name() +
"! Since you were the only member, the clan was disbanded."
));
return;
}
if (executorIsClanLeader) {
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"You must transfer ownership before leaving or disbanding the clan!"
));
return;
}
clanManager.removeMember(playerClan.name(), targetUuid);
- PlayerManager pm = context.getSource().getServer().getPlayerManager();
+ PlayerList pm = context.getSource().getServer().getPlayerList();
String executorName = executor.getName().getString();
for (UUID member : playerClan.members()) {
if (member.equals(targetUuid)) continue;
- ServerPlayerEntity player = pm.getPlayer(member);
+ ServerPlayer player = pm.getPlayer(member);
if (player != null) {
- player.sendMessage(Text.literal(executorName + " was kicked from the clan by " + executorName));
+ player.sendSystemMessage(Component.literal(executorName + " was kicked from the clan by " + executorName));
}
}
- context.getSource().sendMessage(Text.literal("You have kicked yourself from " + playerClan.name() + "!"));
+ context.getSource().sendSystemMessage(Component.literal("You have kicked yourself from " + playerClan.name() + "!"));
return;
}
@@ -128,7 +128,7 @@ public LiteralArgumentBuilder build() {
// officer trying to kick leader or officer
if (executorIsClanOfficer && (targetIsLeader || targetIsOfficer)) {
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"Officers cannot kick other officers or the leader!"
));
return;
@@ -138,16 +138,16 @@ public LiteralArgumentBuilder build() {
// remove the member
clanManager.removeMember(playerClan.name(), targetUuid);
- PlayerManager pm = context.getSource().getServer().getPlayerManager();
+ PlayerList pm = context.getSource().getServer().getPlayerList();
String executorName = executor.getName().getString();
for (UUID member : playerClan.members()) {
if (member.equals(executorUuid) || member.equals(targetUuid)) continue;
- ServerPlayerEntity player = pm.getPlayer(member);
+ ServerPlayer player = pm.getPlayer(member);
if (player != null) {
- player.sendMessage(Text.literal(targetName + " was kicked from the clan by " + executorName));
+ player.sendSystemMessage(Component.literal(targetName + " was kicked from the clan by " + executorName));
}
}
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"Kicked " + targetName + " from " + playerClan.name() + "!"
));
})
diff --git a/src/main/java/mnfu/clantag/commands/LeaveCommand.java b/src/main/java/mnfu/clantag/commands/LeaveCommand.java
index 2c42aaa..7b49c92 100644
--- a/src/main/java/mnfu/clantag/commands/LeaveCommand.java
+++ b/src/main/java/mnfu/clantag/commands/LeaveCommand.java
@@ -3,11 +3,11 @@
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.PlayerManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.server.players.PlayerList;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
@@ -18,20 +18,20 @@ public LeaveCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("leave")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("leave")
.executes(context -> {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can leave clans!"));
+ context.getSource().sendFailure(Component.literal("Only players can leave clans!"));
return 0;
}
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan playerClan = clanManager.getPlayerClan(executorUuid);
if (playerClan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return 0;
}
@@ -40,7 +40,7 @@ public LiteralArgumentBuilder build() {
// if sole member, disband clan
if (playerClan.members().size() == 1) {
clanManager.deleteClan(playerClan.name());
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"You have left " + playerClan.name() +
"! Since you were the only member remaining, the clan was disbanded."
));
@@ -48,7 +48,7 @@ public LiteralArgumentBuilder build() {
}
// must transfer ownership first
- context.getSource().sendError(Text.literal(
+ context.getSource().sendFailure(Component.literal(
"You must transfer ownership before leaving or disbanding the clan!"
));
return 0;
@@ -56,15 +56,15 @@ public LiteralArgumentBuilder build() {
// normal member leaving
clanManager.removeMember(playerClan.name(), executorUuid);
- PlayerManager pm = context.getSource().getServer().getPlayerManager();
+ PlayerList pm = context.getSource().getServer().getPlayerList();
for (UUID member : playerClan.members()) {
if (member.equals(executorUuid)) continue;
- ServerPlayerEntity player = pm.getPlayer(member);
+ ServerPlayer player = pm.getPlayer(member);
if (player != null) {
- player.sendMessage(Text.literal(executor.getName().getString() + " left the clan!"));
+ player.sendSystemMessage(Component.literal(executor.getName().getString() + " left the clan!"));
}
}
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"You have left " + playerClan.name() + "!"
));
return 1;
diff --git a/src/main/java/mnfu/clantag/commands/PromoteCommand.java b/src/main/java/mnfu/clantag/commands/PromoteCommand.java
index 8cbe7b3..8a247b4 100644
--- a/src/main/java/mnfu/clantag/commands/PromoteCommand.java
+++ b/src/main/java/mnfu/clantag/commands/PromoteCommand.java
@@ -5,10 +5,10 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -22,13 +22,13 @@ public PromoteCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("promote")
- .then(CommandManager.argument("playerName", StringArgumentType.greedyString())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("promote")
+ .then(Commands.argument("playerName", StringArgumentType.greedyString())
.suggests((context, builder) -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
+ ServerPlayer player = context.getSource().getPlayer();
if (player == null) return builder.buildFuture();
- Clan clan = clanManager.getPlayerClan(player.getUuid());
+ Clan clan = clanManager.getPlayerClan(player.getUUID());
if (clan == null) return builder.buildFuture();
CompletableFuture>[] nameFutures = clan.members().stream()
.filter(uuid -> !uuid.equals(clan.leader()))
@@ -41,45 +41,45 @@ public LiteralArgumentBuilder build() {
})
.executes(this::executePromote))
.executes(context -> {
- context.getSource().sendError(Text.literal("Usage: /clan promote "));
+ context.getSource().sendFailure(Component.literal("Usage: /clan promote "));
return 1;
});
}
- private int executePromote(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executePromote(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (clan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return 0;
}
- if (!clan.leader().equals(executor.getUuid())) {
- context.getSource().sendError(Text.literal("You must be a clan leader to use this command!"));
+ if (!clan.leader().equals(executor.getUUID())) {
+ context.getSource().sendFailure(Component.literal("You must be a clan leader to use this command!"));
return 0;
}
String targetName = StringArgumentType.getString(context, "playerName");
getUuid(context, targetName).thenAccept(optUuid -> context.getSource().getServer().execute(() -> {
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
if (targetUuid.equals(clan.leader())) {
- context.getSource().sendError(Text.literal("You cannot promote yourself!"));
+ context.getSource().sendFailure(Component.literal("You cannot promote yourself!"));
return;
}
if (!clan.members().contains(targetUuid)) {
- context.getSource().sendError(Text.literal(targetName + " is not in your clan!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is not in your clan!"));
return;
}
if (clan.officers().contains(targetUuid)) {
- context.getSource().sendError(Text.literal(targetName + " is already an Officer!"));
+ context.getSource().sendFailure(Component.literal(targetName + " is already an Officer!"));
return;
}
clanManager.addOfficer(clan.name(), targetUuid);
- context.getSource().sendMessage(Text.literal("Promoted " + targetName + " to an Officer!"));
+ context.getSource().sendSystemMessage(Component.literal("Promoted " + targetName + " to an Officer!"));
}));
return 1;
}
diff --git a/src/main/java/mnfu/clantag/commands/SetCommand.java b/src/main/java/mnfu/clantag/commands/SetCommand.java
index 8cc217f..e50c040 100644
--- a/src/main/java/mnfu/clantag/commands/SetCommand.java
+++ b/src/main/java/mnfu/clantag/commands/SetCommand.java
@@ -6,31 +6,31 @@
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
import mnfu.clantag.ClanManager.JoinPolicy;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.MutableText;
-import net.minecraft.text.Style;
-import net.minecraft.text.Text;
-import net.minecraft.text.TextColor;
-import net.minecraft.util.Formatting;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.MutableComponent;
+import net.minecraft.network.chat.Style;
+import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextColor;
+import net.minecraft.ChatFormatting;
import java.util.Collection;
import java.util.Locale;
public class SetCommand {
private final ClanManager clanManager;
- private final Collection colorNames = Formatting.getNames(true, false);
+ private final Collection colorNames = ChatFormatting.getNames(true, false);
public SetCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("set")
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("set")
// color
- .then(CommandManager.literal("color")
- .then(CommandManager.argument("newColorNameOrHex", StringArgumentType.greedyString())
+ .then(Commands.literal("color")
+ .then(Commands.argument("newColorNameOrHex", StringArgumentType.greedyString())
.suggests((context, builder) -> {
for (String c : colorNames) {
builder.suggest(c);
@@ -40,73 +40,73 @@ public LiteralArgumentBuilder build() {
.executes(this::executeColor)
)
.executes(context -> {
- context.getSource().sendError(Text.literal("Usage: /clan set color "));
+ context.getSource().sendFailure(Component.literal("Usage: /clan set color "));
return 0;
})
)
// access subcommands
- .then(CommandManager.literal("access")
- .then(CommandManager.literal("open").executes(ctx -> executeAccess(ctx, JoinPolicy.OPEN)))
- .then(CommandManager.literal("invite_only").executes(ctx -> executeAccess(ctx, JoinPolicy.INVITE_ONLY)))
- .then(CommandManager.literal("toggle").executes(this::executeAccessToggle))
+ .then(Commands.literal("access")
+ .then(Commands.literal("open").executes(ctx -> executeAccess(ctx, JoinPolicy.OPEN)))
+ .then(Commands.literal("invite_only").executes(ctx -> executeAccess(ctx, JoinPolicy.INVITE_ONLY)))
+ .then(Commands.literal("toggle").executes(this::executeAccessToggle))
)
// name
- .then(CommandManager.literal("name")
- .then(CommandManager.argument("newClanName", StringArgumentType.greedyString())
+ .then(Commands.literal("name")
+ .then(Commands.argument("newClanName", StringArgumentType.greedyString())
.executes(this::executeName)
)
.executes(context -> {
- context.getSource().sendError(Text.literal("Usage: /clan set name "));
+ context.getSource().sendFailure(Component.literal("Usage: /clan set name "));
return 0;
})
)
// default response
.executes(context -> {
- context.getSource().sendError(Text.literal("Valid subcommands: color, access, name"));
+ context.getSource().sendFailure(Component.literal("Valid subcommands: color, access, name"));
return 0;
});
}
- private int executeColor(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeColor(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (!checkClanLeader(executor, clan, context)) return 0;
assert clan != null; // checkClanLeader handles this case
String newColor = StringArgumentType.getString(context, "newColorNameOrHex");
if (newColor == null || newColor.isEmpty()) return 0;
- Formatting formatting = Formatting.byName(newColor);
+ ChatFormatting formatting = ChatFormatting.getByName(newColor);
if (formatting != null && formatting.isColor()) {
- newColor = "#" + Integer.toHexString(formatting.getColorValue()).toUpperCase(Locale.ROOT);
+ newColor = "#" + Integer.toHexString(formatting.getColor()).toUpperCase(Locale.ROOT);
} else if (newColor.matches("(?i)^#?[0-9a-f]{1,6}$")) {
newColor = "#" + newColor.replaceFirst("^#", "").toUpperCase(Locale.ROOT);
} else if ("reset".equalsIgnoreCase(newColor)) {
- newColor = "#" + Integer.toHexString(Formatting.WHITE.getColorValue()).toUpperCase(Locale.ROOT);
+ newColor = "#" + Integer.toHexString(ChatFormatting.WHITE.getColor()).toUpperCase(Locale.ROOT);
} else {
- context.getSource().sendError(Text.literal(newColor + " is not a valid hex color or minecraft color."));
+ context.getSource().sendFailure(Component.literal(newColor + " is not a valid hex color or minecraft color."));
return 0;
}
String oldColor = clan.hexColor();
boolean success = clanManager.changeColor(clan.name(), newColor);
if (!success) {
- context.getSource().sendError(Text.literal("Failed to update the color for clan " + clan.name()));
+ context.getSource().sendFailure(Component.literal("Failed to update the color for clan " + clan.name()));
return 0;
}
- MutableText message = Text.empty();
- TextColor oldClanTextColor = TextColor.parse(oldColor).getOrThrow();
- TextColor newClanTextColor = TextColor.parse(newColor).getOrThrow();
+ MutableComponent message = Component.empty();
+ TextColor oldClanTextColor = TextColor.parseColor(oldColor).getOrThrow();
+ TextColor newClanTextColor = TextColor.parseColor(newColor).getOrThrow();
- message.append(Text.literal("Updated clan color from ").formatted(Formatting.GRAY))
- .append(Text.literal(colorDisplayName(oldColor)).setStyle(Style.EMPTY.withColor(oldClanTextColor)))
- .append(Text.literal(" to ").formatted(Formatting.GRAY))
- .append(Text.literal(colorDisplayName(newColor)).setStyle(Style.EMPTY.withColor(newClanTextColor)))
- .append(Text.literal("!").formatted(Formatting.GRAY));
+ message.append(Component.literal("Updated clan color from ").withStyle(ChatFormatting.GRAY))
+ .append(Component.literal(colorDisplayName(oldColor)).setStyle(Style.EMPTY.withColor(oldClanTextColor)))
+ .append(Component.literal(" to ").withStyle(ChatFormatting.GRAY))
+ .append(Component.literal(colorDisplayName(newColor)).setStyle(Style.EMPTY.withColor(newClanTextColor)))
+ .append(Component.literal("!").withStyle(ChatFormatting.GRAY));
- context.getSource().sendMessage(message);
+ context.getSource().sendSystemMessage(message);
return 1;
}
@@ -115,31 +115,31 @@ private String colorDisplayName(String colorString) {
return color != null ? color.getDisplayName() : colorString;
}
- private int executeAccess(CommandContext context, JoinPolicy newPolicy) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeAccess(CommandContext context, JoinPolicy newPolicy) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (!checkClanLeader(executor, clan, context)) return 0;
assert clan != null; // checkClanLeader handles this case
JoinPolicy oldPolicy = clan.isClosed() ? JoinPolicy.INVITE_ONLY : JoinPolicy.OPEN;
clanManager.changePolicy(clan.name(), newPolicy);
- MutableText message = Text.empty()
- .append(Text.literal("Updated clan access from ").formatted(Formatting.GRAY))
+ MutableComponent message = Component.empty()
+ .append(Component.literal("Updated clan access from ").withStyle(ChatFormatting.GRAY))
.append(accessText(oldPolicy != JoinPolicy.OPEN))
- .append(Text.literal(" to ").formatted(Formatting.GRAY))
+ .append(Component.literal(" to ").withStyle(ChatFormatting.GRAY))
.append(accessText(newPolicy != JoinPolicy.OPEN))
- .append(Text.literal("!").formatted(Formatting.GRAY));
+ .append(Component.literal("!").withStyle(ChatFormatting.GRAY));
- context.getSource().sendMessage(message);
+ context.getSource().sendSystemMessage(message);
return 1;
}
- private int executeAccessToggle(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeAccessToggle(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (!checkClanLeader(executor, clan, context)) return 0;
assert clan != null; // checkClanLeader handles this case
@@ -147,52 +147,52 @@ private int executeAccessToggle(CommandContext context) {
return executeAccess(context, newPolicy);
}
- private MutableText accessText(boolean closed) {
- return Text.literal(closed ? "Invite Only" : "Open")
- .formatted(closed ? Formatting.RED : Formatting.GREEN);
+ private MutableComponent accessText(boolean closed) {
+ return Component.literal(closed ? "Invite Only" : "Open")
+ .withStyle(closed ? ChatFormatting.RED : ChatFormatting.GREEN);
}
- private int executeName(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeName(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) return 0;
- Clan clan = clanManager.getPlayerClan(executor.getUuid());
+ Clan clan = clanManager.getPlayerClan(executor.getUUID());
if (!checkClanLeader(executor, clan, context)) return 0;
assert clan != null; // checkClanLeader handles this case
String newClanName = StringArgumentType.getString(context, "newClanName");
if (newClanName.contains(" ")) {
- context.getSource().sendError(Text.literal("Clan names must not contain spaces!"));
+ context.getSource().sendFailure(Component.literal("Clan names must not contain spaces!"));
return 0;
}
if (newClanName.length() < 3 || newClanName.length() > 16) {
- context.getSource().sendError(Text.literal("Clan names must be 3-16 characters in length!"));
+ context.getSource().sendFailure(Component.literal("Clan names must be 3-16 characters in length!"));
return 0;
}
boolean clanRenamed = clanManager.changeName(clan.name(), newClanName);
if (!clanRenamed) {
- context.getSource().sendError(Text.literal("Clan " + newClanName + " already exists, or " + newClanName + " isn't an allowed name!"));
+ context.getSource().sendFailure(Component.literal("Clan " + newClanName + " already exists, or " + newClanName + " isn't an allowed name!"));
return 0;
}
- TextColor clanTextColor = TextColor.parse(clan.hexColor()).getOrThrow();
- MutableText message = Text.literal("Updated clan name from ").formatted(Formatting.GRAY)
- .append(Text.literal(clan.name()).setStyle(Style.EMPTY.withColor(clanTextColor)))
- .append(Text.literal(" to ").formatted(Formatting.GRAY))
- .append(Text.literal(newClanName).setStyle(Style.EMPTY.withColor(clanTextColor)))
- .append(Text.literal("!").formatted(Formatting.GRAY));
+ TextColor clanTextColor = TextColor.parseColor(clan.hexColor()).getOrThrow();
+ MutableComponent message = Component.literal("Updated clan name from ").withStyle(ChatFormatting.GRAY)
+ .append(Component.literal(clan.name()).setStyle(Style.EMPTY.withColor(clanTextColor)))
+ .append(Component.literal(" to ").withStyle(ChatFormatting.GRAY))
+ .append(Component.literal(newClanName).setStyle(Style.EMPTY.withColor(clanTextColor)))
+ .append(Component.literal("!").withStyle(ChatFormatting.GRAY));
- context.getSource().sendMessage(message);
+ context.getSource().sendSystemMessage(message);
return 1;
}
- private boolean checkClanLeader(ServerPlayerEntity executor, Clan clan, CommandContext context) {
+ private boolean checkClanLeader(ServerPlayer executor, Clan clan, CommandContext context) {
if (clan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return false;
}
- if (!clan.leader().equals(executor.getUuid())) {
- context.getSource().sendError(Text.literal("You must be a clan leader to use this command!"));
+ if (!clan.leader().equals(executor.getUUID())) {
+ context.getSource().sendFailure(Component.literal("You must be a clan leader to use this command!"));
return false;
}
return true;
diff --git a/src/main/java/mnfu/clantag/commands/TransferLeadershipCommand.java b/src/main/java/mnfu/clantag/commands/TransferLeadershipCommand.java
index 17b5c2b..3f3150b 100644
--- a/src/main/java/mnfu/clantag/commands/TransferLeadershipCommand.java
+++ b/src/main/java/mnfu/clantag/commands/TransferLeadershipCommand.java
@@ -5,10 +5,10 @@
import com.mojang.brigadier.context.CommandContext;
import mnfu.clantag.Clan;
import mnfu.clantag.ClanManager;
-import net.minecraft.server.command.CommandManager;
-import net.minecraft.server.command.ServerCommandSource;
-import net.minecraft.server.network.ServerPlayerEntity;
-import net.minecraft.text.Text;
+import net.minecraft.commands.Commands;
+import net.minecraft.commands.CommandSourceStack;
+import net.minecraft.server.level.ServerPlayer;
+import net.minecraft.network.chat.Component;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
@@ -22,13 +22,13 @@ public TransferLeadershipCommand(ClanManager clanManager) {
this.clanManager = clanManager;
}
- public LiteralArgumentBuilder build() {
- return CommandManager.literal("transfer")
- .then(CommandManager.argument("playerName", StringArgumentType.word())
+ public LiteralArgumentBuilder build() {
+ return Commands.literal("transfer")
+ .then(Commands.argument("playerName", StringArgumentType.word())
.suggests((context, builder) -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
+ ServerPlayer player = context.getSource().getPlayer();
if (player == null) return builder.buildFuture();
- Clan clan = clanManager.getPlayerClan(player.getUuid());
+ Clan clan = clanManager.getPlayerClan(player.getUUID());
if (clan == null) return builder.buildFuture();
CompletableFuture>[] nameFutures = clan.members().stream()
.map(uuid -> CommandUtils.getPlayerName(context, uuid)
@@ -41,48 +41,48 @@ public LiteralArgumentBuilder build() {
);
}
- private int executeTransfer(CommandContext context) {
- ServerPlayerEntity executor = context.getSource().getPlayer();
+ private int executeTransfer(CommandContext context) {
+ ServerPlayer executor = context.getSource().getPlayer();
if (executor == null) {
- context.getSource().sendError(Text.literal("Only players can transfer leadership!"));
+ context.getSource().sendFailure(Component.literal("Only players can transfer leadership!"));
return 0;
}
String targetName = StringArgumentType.getString(context, "playerName");
- UUID executorUuid = executor.getUuid();
+ UUID executorUuid = executor.getUUID();
Clan playerClan = clanManager.getPlayerClan(executorUuid);
if (playerClan == null) {
- context.getSource().sendError(Text.literal("You are not in a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not in a clan!"));
return 0;
}
if (!playerClan.leader().equals(executorUuid)) {
- context.getSource().sendError(Text.literal("You are not the leader of a clan!"));
+ context.getSource().sendFailure(Component.literal("You are not the leader of a clan!"));
return 0;
}
getUuid(context, targetName).thenAccept(optUuid ->
context.getSource().getServer().execute(() -> {
if (optUuid.isEmpty()) {
- context.getSource().sendError(Text.literal("Player not found!"));
+ context.getSource().sendFailure(Component.literal("Player not found!"));
return;
}
UUID targetUuid = optUuid.get();
if (targetUuid.equals(executorUuid)) {
- context.getSource().sendError(Text.literal("You are already the leader of this clan!"));
+ context.getSource().sendFailure(Component.literal("You are already the leader of this clan!"));
return;
}
boolean success = clanManager.transferLeader(playerClan.name(), targetUuid);
if (!success) {
- context.getSource().sendError(Text.literal(targetName + " is not in " + playerClan.name()));
+ context.getSource().sendFailure(Component.literal(targetName + " is not in " + playerClan.name()));
return;
}
- context.getSource().sendMessage(Text.literal(
+ context.getSource().sendSystemMessage(Component.literal(
"Successfully transferred leadership of " + playerClan.name() + " to " + targetName + "!"));
})
);
diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json
index 5fa72ab..f6f5d84 100644
--- a/src/main/resources/fabric.mod.json
+++ b/src/main/resources/fabric.mod.json
@@ -27,7 +27,6 @@
"depends": {
"fabricloader": ">=${loader_version}",
"fabric-api": "*",
- "minecraft": ">=${minecraft_version}",
- "luckperms": ">=${luckperms_version}"
+ "minecraft": ">=${minecraft_version}"
}
}