9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-30 20:39:13 +00:00

Can now add colors via commands

This commit is contained in:
LoJoSho
2023-01-11 14:28:15 -06:00
parent 35fc1fe48b
commit dce6e4e0ca
4 changed files with 46 additions and 5 deletions

View File

@@ -13,10 +13,12 @@ import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu;
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
import com.hibiscusmc.hmccosmetics.util.MessagesUtil;
import com.hibiscusmc.hmccosmetics.util.ServerUtils;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.commons.lang3.EnumUtils;
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -197,7 +199,7 @@ public class CosmeticCommand implements CommandExecutor {
return true;
}
else if (args[0].equalsIgnoreCase("dye") && args.length == 2) {
else if (args[0].equalsIgnoreCase("dye") && args.length >= 2) {
Player player = sender instanceof Player ? (Player) sender : null;
if (player == null) return true;
CosmeticUser user = CosmeticUsers.getUser(player);
@@ -206,7 +208,24 @@ public class CosmeticCommand implements CommandExecutor {
MessagesUtil.sendMessage(sender, "no-permission");
return true;
}
DyeMenu.openMenu(user, user.getCosmetic(CosmeticSlot.valueOf(args[1])));
CosmeticSlot slot = CosmeticSlot.valueOf(args[1]);
Cosmetic cosmetic = user.getCosmetic(slot);
if (args.length >= 3) {
if (!args[2].contains("#") || args[2].isEmpty()) {
MessagesUtil.sendMessage(player, "invalid-color");
return true;
}
Color color = ServerUtils.hex2Rgb(args[2]);
if (color == null) {
MessagesUtil.sendMessage(player, "invalid-color");
return true;
}
user.addPlayerCosmetic(cosmetic, color); // #FFFFFF
} else {
DyeMenu.openMenu(user, cosmetic);
}
}
else if (args[0].equalsIgnoreCase("setlocation")) {

View File

@@ -42,7 +42,7 @@ public class CosmeticCommandTabComplete implements TabCompleter {
if (!(sender instanceof Player)) return completions;
CosmeticUser user = CosmeticUsers.getUser(((Player) sender).getUniqueId());
if (args.length >= 2) {
if (args.length == 2) {
String subcommand = args[0].toLowerCase();
switch (subcommand) {
case "apply" -> {
@@ -74,6 +74,15 @@ public class CosmeticCommandTabComplete implements TabCompleter {
}
StringUtil.copyPartialMatches(args[1], completions, finalCompletitons);
}
if (args.length == 3) {
String subcommand = args[0].toLowerCase();
switch (subcommand) {
case "dye" -> {
completions.add("#FFFFFF");
}
}
StringUtil.copyPartialMatches(args[2], completions, finalCompletitons);
}
Collections.sort(finalCompletitons);
return finalCompletitons;

View File

@@ -11,6 +11,7 @@ import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.title.Title;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -59,6 +60,13 @@ public class MessagesUtil {
target.sendMessage(finalMessage);
}
public static void sendMessageNoKey(Player player, String message) {
Component finalMessage = processStringNoKey(player, message);
Audience target = BukkitAudiences.create(HMCCosmeticsPlugin.getInstance()).player(player);
target.sendMessage(finalMessage);
}
public static void sendActionBar(Player player, String key) {
Component finalMessage = processString(player, key);
Audience target = BukkitAudiences.create(HMCCosmeticsPlugin.getInstance()).player(player);
@@ -112,7 +120,11 @@ public class MessagesUtil {
return Adventure.MINI_MESSAGE.deserialize(message);
}
public static String processStringNoKeyString(Player player, String message) {
message = message.replaceAll("%prefix%", prefix);
if (PAPIHook.isPAPIEnabled() && player != null) message = PlaceholderAPI.setPlaceholders(player, message);
return message;
}
public static void sendDebugMessages(String message) {
sendDebugMessages(message, Level.INFO);