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

dye menu impl

This commit is contained in:
Boy
2022-12-08 21:46:28 +01:00
parent d9acf2eb53
commit 1bd26129bf
4 changed files with 52 additions and 21 deletions

View File

@@ -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;
}

View File

@@ -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());
}
}

View File

@@ -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);
}
}