feat(gui/favorites): remove/add items
This commit is contained in:
parent
8d394df1d6
commit
b85325fde5
3 changed files with 122 additions and 0 deletions
|
@ -6,7 +6,9 @@ import xyz.ineanto.nicko.appearance.Appearance;
|
|||
import xyz.ineanto.nicko.gui.items.common.GoBackItem;
|
||||
import xyz.ineanto.nicko.gui.items.common.ScrollDownItem;
|
||||
import xyz.ineanto.nicko.gui.items.common.ScrollUpItem;
|
||||
import xyz.ineanto.nicko.gui.items.favorites.FavoriteAddItem;
|
||||
import xyz.ineanto.nicko.gui.items.favorites.FavoriteAppearanceEntryItem;
|
||||
import xyz.ineanto.nicko.gui.items.favorites.FavoriteRemoveItem;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.ineanto.nicko.profile.NickoProfile;
|
||||
|
@ -34,6 +36,9 @@ public class FavoritesGUI {
|
|||
final ScrollUpItem scrollUpItem = new ScrollUpItem(playerLanguage);
|
||||
final ScrollDownItem scrollDownItem = new ScrollDownItem(playerLanguage);
|
||||
|
||||
final FavoriteAddItem favoriteAddItem = new FavoriteAddItem(playerLanguage);
|
||||
final FavoriteRemoveItem favoriteRemoveItem = new FavoriteRemoveItem(playerLanguage);
|
||||
|
||||
final NickoProfile profile = Nicko.getInstance().getDataStore().getData(player.getUniqueId()).orElse(NickoProfile.EMPTY_PROFILE);
|
||||
final List<Appearance> favorites = profile.getFavorites();
|
||||
List<Item> items;
|
||||
|
@ -58,6 +63,8 @@ public class FavoritesGUI {
|
|||
guiItemBuilder.addIngredient('U', scrollUpItem);
|
||||
guiItemBuilder.addIngredient('D', scrollDownItem);
|
||||
guiItemBuilder.addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle()));
|
||||
guiItemBuilder.addIngredient('A', favoriteAddItem.get());
|
||||
guiItemBuilder.addIngredient('R', favoriteRemoveItem.get());
|
||||
guiItemBuilder.setContent(items);
|
||||
});
|
||||
this.player = player;
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
package xyz.ineanto.nicko.gui.items.favorites;
|
||||
|
||||
import io.papermc.paper.datacomponent.DataComponentTypes;
|
||||
import io.papermc.paper.datacomponent.item.TooltipDisplay;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.banner.Pattern;
|
||||
import org.bukkit.block.banner.PatternType;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.xenondevs.invui.item.builder.ItemBuilder;
|
||||
import xyz.xenondevs.invui.item.impl.SuppliedItem;
|
||||
|
||||
public class FavoriteAddItem {
|
||||
private final PlayerLanguage playerLanguage;
|
||||
|
||||
public FavoriteAddItem(PlayerLanguage playerLanguage) {
|
||||
this.playerLanguage = playerLanguage;
|
||||
}
|
||||
|
||||
public SuppliedItem get() {
|
||||
return new SuppliedItem(() -> {
|
||||
final ItemStack banner = new ItemStack(Material.GREEN_BANNER);
|
||||
final BannerMeta bannerMeta = (BannerMeta) banner.getItemMeta();
|
||||
|
||||
// Plus sign
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_MIDDLE));
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_CENTER));
|
||||
|
||||
// Remove excess on the borders
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.GREEN, PatternType.BORDER));
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.GREEN, PatternType.CURLY_BORDER));
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.GREEN, PatternType.STRIPE_TOP));
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.GREEN, PatternType.STRIPE_BOTTOM));
|
||||
|
||||
banner.setItemMeta(bannerMeta);
|
||||
|
||||
banner.addItemFlags(ItemFlag.HIDE_ADDITIONAL_TOOLTIP);
|
||||
banner.setData(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplay
|
||||
.tooltipDisplay()
|
||||
.addHiddenComponents(DataComponentTypes.BANNER_PATTERNS)
|
||||
.build()
|
||||
);
|
||||
|
||||
final ItemBuilder builder = new ItemBuilder(banner);
|
||||
return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.FAVORITES);
|
||||
}, click -> {
|
||||
final ClickType clickType = click.getClickType();
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
click.getEvent().getView().close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package xyz.ineanto.nicko.gui.items.favorites;
|
||||
|
||||
import io.papermc.paper.datacomponent.DataComponentTypes;
|
||||
import io.papermc.paper.datacomponent.item.TooltipDisplay;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.banner.Pattern;
|
||||
import org.bukkit.block.banner.PatternType;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.xenondevs.invui.item.builder.ItemBuilder;
|
||||
import xyz.xenondevs.invui.item.impl.SuppliedItem;
|
||||
|
||||
public class FavoriteRemoveItem {
|
||||
private final PlayerLanguage playerLanguage;
|
||||
|
||||
public FavoriteRemoveItem(PlayerLanguage playerLanguage) {
|
||||
this.playerLanguage = playerLanguage;
|
||||
}
|
||||
|
||||
public SuppliedItem get() {
|
||||
return new SuppliedItem(() -> {
|
||||
final ItemStack banner = new ItemStack(Material.RED_BANNER);
|
||||
final BannerMeta bannerMeta = (BannerMeta) banner.getItemMeta();
|
||||
|
||||
// Minus sign
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.WHITE, PatternType.STRIPE_MIDDLE));
|
||||
|
||||
// Remove excess
|
||||
bannerMeta.addPattern(new Pattern(DyeColor.RED, PatternType.BORDER));
|
||||
banner.setItemMeta(bannerMeta);
|
||||
|
||||
banner.addItemFlags(ItemFlag.HIDE_ADDITIONAL_TOOLTIP);
|
||||
banner.setData(DataComponentTypes.TOOLTIP_DISPLAY, TooltipDisplay
|
||||
.tooltipDisplay()
|
||||
.addHiddenComponents(DataComponentTypes.BANNER_PATTERNS)
|
||||
.build()
|
||||
);
|
||||
|
||||
final ItemBuilder builder = new ItemBuilder(banner);
|
||||
return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.FAVORITES);
|
||||
}, click -> {
|
||||
final ClickType clickType = click.getClickType();
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
click.getEvent().getView().close();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue