Add nick and prefix commands

This commit is contained in:
zontreck 2025-04-09 23:26:56 -07:00
parent 05b7d0e38f
commit 40288b1a92
8 changed files with 175 additions and 0 deletions

View file

@ -6,12 +6,17 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import dev.zontreck.ase.guis.ChestGUI;
import dev.zontreck.ase.guis.PrimitiveAction;
import dev.zontreck.ase.guis.PrimitiveItem;
import io.papermc.paper.event.player.AsyncChatEvent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
public class EventsHandler implements Listener {
@ -30,6 +35,42 @@ public class EventsHandler implements Listener {
AriasServerEssentials.cachedPlayerData.remove(id);
}
@EventHandler
public static void onChat(AsyncChatEvent ev) {
Player sender = ev.getPlayer();
Component message = ev.message();
// Get player's saved data
SavedData playerData = AriasServerEssentials.getPlayerData(sender.getUniqueId().toString());
String nickname = playerData.profile.nickname;
String prefix = playerData.profile.prefix;
// Fallbacks
if (nickname == null || nickname.isEmpty()) {
nickname = sender.getName();
}
if (prefix == null) {
prefix = "";
}
// Build the chat format: [prefix] [nickname/username]: message
Component prefixComponent = Component.text(prefix, NamedTextColor.GRAY);
Component nameComponent = Component.text(nickname, NamedTextColor.YELLOW);
Component colonComponent = Component.text(": ", NamedTextColor.GRAY);
Component finalMessage = Component.empty()
.append(prefixComponent)
.append(Component.space())
.append(nameComponent)
.append(colonComponent)
.append(message)
.hoverEvent(HoverEvent.showText(Component.text("Username: " + sender.getName())));
ev.setCancelled(true); // Cancel the original message
ev.viewers().forEach(viewer -> viewer.sendMessage(finalMessage));
}
@EventHandler
public static void onPlayerInteractGUI(InventoryClickEvent ice) {
// Get the player who clicked

View file

@ -1,5 +1,7 @@
package dev.zontreck.ase.commands;
import org.bukkit.entity.Player;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.arguments.StringArgumentType;
@ -10,6 +12,8 @@ import dev.zontreck.ase.commands.homes.SetHomeCommand;
import dev.zontreck.ase.commands.misc.BroadcastCommand;
import dev.zontreck.ase.commands.misc.CloseInvCommand;
import dev.zontreck.ase.commands.misc.CreditsCommand;
import dev.zontreck.ase.commands.misc.NickCommand;
import dev.zontreck.ase.commands.misc.PrefixCommand;
import dev.zontreck.ase.commands.misc.PronounsCommand;
import dev.zontreck.ase.commands.misc.ShareItemCommand;
import dev.zontreck.ase.commands.tpa.TPACancelCommand;
@ -202,5 +206,29 @@ public class CommandRegistry {
PlayerPronouns.TheyThem)))
.build());
cmds.register(Commands.literal("nick")
.requires(x -> x.getSender().isPermissionSet(NickCommand.PERMISSION))
.then(Commands.argument("nick", StringArgumentType.string())
.executes(ctx -> NickCommand.execute(ctx.getSource(),
StringArgumentType.getString(ctx, "nick"))))
.build());
cmds.register(Commands.literal("prefix")
.requires(x -> x.getSender().isPermissionSet(PrefixCommand.PERMISSION))
.then(Commands.argument("prefix", StringArgumentType.word())
.executes(ctx -> PrefixCommand.execute(ctx.getSource(),
(Player) ctx.getSource().getSender(),
StringArgumentType.getString(ctx, "prefix"))))
.then(Commands.argument("target", ArgumentTypes.player())
.requires(x -> x.getSender().isOp())
.executes(ctx -> PrefixCommand.execute(ctx.getSource(),
ctx.getArgument("target",
PlayerSelectorArgumentResolver.class)
.resolve(ctx.getSource()).getFirst(),
StringArgumentType.getString(ctx, "prefix"))))
.build());
}
}

View file

@ -0,0 +1,27 @@
package dev.zontreck.ase.commands.misc;
import org.bukkit.entity.Player;
import com.mojang.brigadier.Command;
import dev.zontreck.ase.AriasServerEssentials;
import dev.zontreck.ase.SavedData;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
public class NickCommand {
public static final String PERMISSION = "ase.commands.nick";
public static int execute(CommandSourceStack ctx, String nickname) {
Player player = (Player) ctx.getSender();
SavedData data = AriasServerEssentials.getPlayerData(player.getUniqueId().toString());
data.profile.nickname = nickname;
data.save(player.getUniqueId().toString());
player.sendMessage(Component.text("Your nickname has been updated!", NamedTextColor.DARK_GREEN));
return Command.SINGLE_SUCCESS;
}
}

View file

@ -0,0 +1,30 @@
package dev.zontreck.ase.commands.misc;
import org.bukkit.entity.Player;
import com.mojang.brigadier.Command;
import dev.zontreck.ase.AriasServerEssentials;
import dev.zontreck.ase.SavedData;
import dev.zontreck.ase.utils.ProfileUtils;
import io.papermc.paper.command.brigadier.CommandSourceStack;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
public class PrefixCommand {
public static final String PERMISSION = "ase.commands.prefix";
public static int execute(CommandSourceStack ctx, Player target, String prefix) {
SavedData data = AriasServerEssentials.getPlayerData(target.getUniqueId().toString());
data.profile.prefix = prefix;
data.save(target.getUniqueId().toString());
ctx.getSender()
.sendMessage(Component.text("Prefix for '", NamedTextColor.DARK_GREEN)
.append(Component.text(ProfileUtils.getPlayerNickname(target), NamedTextColor.YELLOW)
.append(Component.text("' has been updated.", NamedTextColor.DARK_GREEN))));
return Command.SINGLE_SUCCESS;
}
}

View file

@ -5,11 +5,13 @@ import org.bukkit.configuration.ConfigurationSection;
public class PlayerProfile {
public PlayerPronouns pronouns = PlayerPronouns.TheyThem;
public String nickname = "";
public String prefix = "";
public ConfigurationSection serialize(ConfigurationSection parent) {
ConfigurationSection profile = parent.createSection("profile");
profile.set("nickname", nickname);
profile.set("pronouns", pronouns.name());
profile.set("prefix", prefix);
return profile;
}
@ -18,6 +20,7 @@ public class PlayerProfile {
if (section == null)
return new PlayerProfile();
String nick = "";
String prefix = "";
PlayerPronouns pronouns = PlayerPronouns.TheyThem;
if (section.contains("nickname")) {
nick = section.getString("nickname");
@ -27,9 +30,14 @@ public class PlayerProfile {
pronouns = PlayerPronouns.valueOf(section.getString("pronouns"));
}
if (section.contains("prefix")) {
prefix = section.getString("prefix");
}
PlayerProfile profile = new PlayerProfile();
profile.nickname = nick;
profile.pronouns = pronouns;
profile.prefix = prefix;
return profile;
}

View file

@ -0,0 +1,15 @@
package dev.zontreck.ase.utils;
import org.bukkit.entity.Player;
import dev.zontreck.ase.AriasServerEssentials;
public class ProfileUtils {
public static String getPlayerPrefix(Player player) {
return AriasServerEssentials.getPlayerData(player.getUniqueId().toString()).profile.prefix;
}
public static String getPlayerNickname(Player player) {
return AriasServerEssentials.getPlayerData(player.getUniqueId().toString()).profile.nickname;
}
}

View file

@ -66,6 +66,12 @@ commands:
pronouns:
description: Update your pronouns!
usage: "- /pronouns [sheher,hehim,theythem] -"
nick:
description: Change nickname
usage: "- /nick [nickname] -"
prefix:
description: Change prefix
usage: "- /prefix [optional:player] [prefix]"
permissions:
ase.commands.*:
description: Allow all commands
@ -88,6 +94,7 @@ permissions:
ase.commands.warps: true
ase.commands.editwarp: true
ase.commands.pronouns: true
ase.commands.nick: true
ase.commands.home:
description: Allows usage of the /home command
default: true
@ -148,3 +155,9 @@ permissions:
ase.commands.pronouns:
description: Allow usage of /pronouns
default: true
ase.commands.nick:
description: Allow changing nickname
default: true
ase.commands.prefix:
description: Allow changing prefix
default: false

View file

@ -66,6 +66,12 @@ commands:
pronouns:
description: Update your pronouns!
usage: "- /pronouns [sheher,hehim,theythem] -"
nick:
description: Change nickname
usage: "- /nick [nickname] -"
prefix:
description: Change prefix
usage: "- /prefix [optional:player] [prefix]"
permissions:
ase.commands.*:
description: Allow all commands
@ -88,6 +94,7 @@ permissions:
ase.commands.warps: true
ase.commands.editwarp: true
ase.commands.pronouns: true
ase.commands.nick: true
ase.commands.home:
description: Allows usage of the /home command
default: true
@ -148,3 +155,9 @@ permissions:
ase.commands.pronouns:
description: Allow usage of /pronouns
default: true
ase.commands.nick:
description: Allow changing nickname
default: true
ase.commands.prefix:
description: Allow changing prefix
default: false