mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2025-12-30 04:19:28 +00:00
dye menu impl
This commit is contained in:
@@ -7,8 +7,10 @@ import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
|
||||
import com.hibiscusmc.hmccosmetics.database.Database;
|
||||
import com.hibiscusmc.hmccosmetics.gui.Menu;
|
||||
import com.hibiscusmc.hmccosmetics.gui.Menus;
|
||||
import com.hibiscusmc.hmccosmetics.gui.special.DyeMenu;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
|
||||
import io.th0rgal.oraxen.utils.logs.Logs;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -17,6 +19,8 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class CosmeticCommand implements CommandExecutor {
|
||||
|
||||
// cosmetics apply cosmetics playerName
|
||||
@@ -115,6 +119,15 @@ public class CosmeticCommand implements CommandExecutor {
|
||||
if (player == null) return true;
|
||||
Database.clearData(player.getUniqueId());
|
||||
sender.sendMessage("Cleared data for " + player.getName());
|
||||
return true;
|
||||
}
|
||||
|
||||
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);
|
||||
if (user == null) return true;
|
||||
DyeMenu.openMenu(user, user.getCosmetic(CosmeticSlot.valueOf(args[1])));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@@ -28,6 +29,7 @@ public class CosmeticCommandTabComplete implements TabCompleter {
|
||||
completions.add("menu");
|
||||
completions.add("reload");
|
||||
completions.add("dataclear");
|
||||
completions.add("dye");
|
||||
}
|
||||
|
||||
// This needs to be redone.
|
||||
@@ -44,6 +46,9 @@ public class CosmeticCommandTabComplete implements TabCompleter {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
completions.add(player.getName());
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("dye")) {
|
||||
completions.add(CosmeticSlot.BALLOON.name());
|
||||
completions.add(CosmeticSlot.BACKPACK.name());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,25 @@
|
||||
package com.hibiscusmc.hmccosmetics.gui.special;
|
||||
|
||||
import com.hibiscusmc.hmccolor.HMCColorApi;
|
||||
import com.hibiscusmc.hmccolor.gui.guis.Gui;
|
||||
import com.hibiscusmc.hmccolor.gui.guis.GuiItem;
|
||||
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
|
||||
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticArmorType;
|
||||
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBackpackType;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.Adventure;
|
||||
import com.hibiscusmc.hmccosmetics.util.misc.Placeholder;
|
||||
import dev.triumphteam.gui.builder.item.ItemBuilder;
|
||||
import dev.triumphteam.gui.guis.Gui;
|
||||
import dev.triumphteam.gui.guis.GuiItem;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||
import org.bukkit.inventory.meta.PotionMeta;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class DyeMenu {
|
||||
|
||||
@@ -20,27 +28,31 @@ public class DyeMenu {
|
||||
|
||||
public static void openMenu(CosmeticUser user, Cosmetic cosmetic) {
|
||||
|
||||
ItemStack originalItem = null;
|
||||
|
||||
if (cosmetic instanceof CosmeticBackpackType) originalItem = ((CosmeticBackpackType) cosmetic).getBackpackItem();
|
||||
if (cosmetic instanceof CosmeticArmorType) originalItem = ((CosmeticArmorType) cosmetic).getCosmeticItem();
|
||||
if (originalItem == null) return;
|
||||
ItemStack originalItem = user.getUserCosmeticItem(cosmetic);
|
||||
if (originalItem == null || !cosmetic.isDyable()) return;
|
||||
|
||||
Player player = user.getPlayer();
|
||||
final Component component = Adventure.MINI_MESSAGE.deserialize(Placeholder.applyPapiPlaceholders(player, "Dying Menu"));
|
||||
Gui gui = Gui.gui().
|
||||
title(component).
|
||||
rows(6).
|
||||
create();
|
||||
|
||||
gui.setDefaultClickAction(event -> event.setCancelled(true));
|
||||
|
||||
gui.setItem(1, ItemBuilder.from(originalItem).asGuiItem());
|
||||
GuiItem guiItem = ItemBuilder.from(originalItem).asGuiItem();
|
||||
HMCColorApi hmcColorApi = new HMCColorApi();
|
||||
Gui gui = hmcColorApi.getColorMenu();
|
||||
gui.updateTitle(Placeholder.applyPapiPlaceholders(player, "Dyeing Menu"));
|
||||
gui.setItem(19, new GuiItem(originalItem));
|
||||
gui.setDefaultTopClickAction(event -> {
|
||||
if (event.getSlot() == 25) {
|
||||
ItemStack item = event.getInventory().getItem(25);
|
||||
if (item == null) return;
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta == null) return;
|
||||
Color color = meta instanceof LeatherArmorMeta ? ((LeatherArmorMeta) meta).getColor() :
|
||||
meta instanceof PotionMeta ? ((PotionMeta) meta).getColor() : null;
|
||||
if (color == null) return;
|
||||
//user.removeCosmeticSlot(cosmetic);
|
||||
user.addPlayerCosmetic(cosmetic, color);
|
||||
player.closeInventory();
|
||||
} else event.setCancelled(true);
|
||||
});
|
||||
|
||||
gui.setPlayerInventoryAction(event -> event.setCancelled(true));
|
||||
gui.setCloseGuiAction(event -> player.closeInventory());
|
||||
gui.open(player);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user