feat: add favorites item and gui
This commit is contained in:
parent
7eca066cf1
commit
814d7adea7
6 changed files with 95 additions and 1 deletions
44
src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java
Normal file
44
src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java
Normal file
|
@ -0,0 +1,44 @@
|
|||
package xyz.ineanto.nicko.gui;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import xyz.ineanto.nicko.gui.items.common.GoBackItem;
|
||||
import xyz.ineanto.nicko.language.LanguageKey;
|
||||
import xyz.ineanto.nicko.language.PlayerLanguage;
|
||||
import xyz.xenondevs.invui.gui.Gui;
|
||||
import xyz.xenondevs.invui.window.Window;
|
||||
|
||||
public class FavoritesGUI {
|
||||
private final Player player;
|
||||
private final Gui gui;
|
||||
private final String title;
|
||||
|
||||
public FavoritesGUI(Player player) {
|
||||
final PlayerLanguage playerLanguage = new PlayerLanguage(player);
|
||||
this.title = playerLanguage.translate(LanguageKey.GUI.Titles.FAVORITES, false);
|
||||
|
||||
final HomeGUI parent = new HomeGUI(player);
|
||||
final GoBackItem backItem = new GoBackItem(player);
|
||||
|
||||
this.gui = Gui.normal()
|
||||
.setStructure(
|
||||
"# # # # # # # # #",
|
||||
"# # # S C E # # #",
|
||||
"B # # # # # # # #"
|
||||
)
|
||||
.addIngredient('B', backItem.get(parent.getGUI(), parent.getTitle()))
|
||||
.build();
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public Gui getGUI() {
|
||||
return gui;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void open() {
|
||||
Window.single().setGui(gui).setTitle(title).open(player);
|
||||
}
|
||||
}
|
|
@ -19,7 +19,7 @@ public class HomeGUI {
|
|||
final String[] dynamicStructure = new String[]{
|
||||
"# # # # D # # # #",
|
||||
"A # # N B S # # #",
|
||||
"E P # # # # # # R"};
|
||||
"E P # # F # # # R"};
|
||||
|
||||
if (!player.isOp() || !player.hasPermission("nicko.admin")) {
|
||||
dynamicStructure[2] = dynamicStructure[2].replace("A", "#");
|
||||
|
@ -36,6 +36,7 @@ public class HomeGUI {
|
|||
final SettingsAccessItem settingsAccessItem = new SettingsAccessItem(player);
|
||||
final AdminAccessItem adminAccessItem = new AdminAccessItem(player);
|
||||
final RandomSkinItem randomSkinItem = new RandomSkinItem(player);
|
||||
final FavoritesItem favoritesItem = new FavoritesItem(player);
|
||||
|
||||
this.gui = Gui.normal()
|
||||
.setStructure(dynamicStructure)
|
||||
|
@ -47,6 +48,7 @@ public class HomeGUI {
|
|||
.addIngredient('P', settingsAccessItem.get())
|
||||
.addIngredient('A', adminAccessItem.get())
|
||||
.addIngredient('D', randomSkinItem.get())
|
||||
.addIngredient('F', favoritesItem.get())
|
||||
.build();
|
||||
this.player = player;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package xyz.ineanto.nicko.gui.items.home;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import xyz.ineanto.nicko.gui.FavoritesGUI;
|
||||
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 FavoritesItem {
|
||||
private final PlayerLanguage playerLanguage;
|
||||
|
||||
public FavoritesItem(Player player) {
|
||||
this.playerLanguage = new PlayerLanguage(player);
|
||||
}
|
||||
|
||||
public SuppliedItem get() {
|
||||
return new SuppliedItem(() -> {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.CHEST);
|
||||
return playerLanguage.translateItem(builder, LanguageKey.GUI.Home.FAVORITES);
|
||||
}, click -> {
|
||||
final Player player = click.getPlayer();
|
||||
final ClickType clickType = click.getClickType();
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
click.getEvent().getView().close();
|
||||
new FavoritesGUI(click.getPlayer()).open();
|
||||
player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 1f);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
|
@ -92,6 +92,7 @@ public class LanguageKey {
|
|||
public static final String CONFIRM = TITLE_KEY + "confirm";
|
||||
public static final String CACHE = TITLE_KEY + "cache";
|
||||
public static final String INVALIDATE_SKIN = TITLE_KEY + "invalidate_skin";
|
||||
public static final String FAVORITES = TITLE_KEY + "favorites";
|
||||
}
|
||||
|
||||
public static class Choice {
|
||||
|
@ -112,6 +113,7 @@ public class LanguageKey {
|
|||
public static final String RESET = HOME_KEY + "reset";
|
||||
public static final String RANDOM_SKIN = HOME_KEY + "random_skin";
|
||||
public static final String SETTINGS = HOME_KEY + "settings";
|
||||
public static final String FAVORITES = HOME_KEY + "favorites";
|
||||
}
|
||||
|
||||
public static class Settings {
|
||||
|
|
|
@ -45,6 +45,7 @@ gui:
|
|||
confirm: "Are you sure?"
|
||||
cache: "Cache Management"
|
||||
invalidate_skin: "Purge cache..."
|
||||
favorites: "Favorites"
|
||||
|
||||
exit:
|
||||
name: "Exit"
|
||||
|
@ -100,6 +101,10 @@ gui:
|
|||
name: "Reset appearance"
|
||||
lore:
|
||||
- "<gray>Completely remove your disguise.</gray>"
|
||||
favorites:
|
||||
name: "Favorites"
|
||||
lore:
|
||||
- "<gray>List all your favorites appearances.</gray>"
|
||||
admin:
|
||||
manage_cache:
|
||||
name: "Manage the skin cache..."
|
||||
|
|
|
@ -45,6 +45,7 @@ gui:
|
|||
confirm: "Êtes-vous sûr ?"
|
||||
cache: "Gestion du Cache"
|
||||
invalidate_skin: "Purge du cache..."
|
||||
favorites: "Favoris"
|
||||
|
||||
exit:
|
||||
name: "Quitter"
|
||||
|
@ -101,6 +102,10 @@ gui:
|
|||
name: "Réinitialiser l'apparence"
|
||||
lore:
|
||||
- "<gray>Supprime complètement votre déguisement.</gray>"
|
||||
favorites:
|
||||
name: "Favoris"
|
||||
lore:
|
||||
- "<gray>Listez toutes vos apparences favorites.</gray>"
|
||||
admin:
|
||||
manage_cache:
|
||||
name: "Gérer le cache de skin..."
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue