diff --git a/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java
new file mode 100644
index 0000000..6a1c0f5
--- /dev/null
+++ b/src/main/java/xyz/ineanto/nicko/gui/FavoritesGUI.java
@@ -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);
+ }
+}
diff --git a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java
index 321b55e..90b04dc 100644
--- a/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java
+++ b/src/main/java/xyz/ineanto/nicko/gui/HomeGUI.java
@@ -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;
}
diff --git a/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java b/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java
new file mode 100644
index 0000000..97472da
--- /dev/null
+++ b/src/main/java/xyz/ineanto/nicko/gui/items/home/FavoritesItem.java
@@ -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;
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java
index d8f9ef5..9ccfd4d 100644
--- a/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java
+++ b/src/main/java/xyz/ineanto/nicko/language/LanguageKey.java
@@ -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 {
diff --git a/src/main/resources/en.yml b/src/main/resources/en.yml
index d9ca19e..e333fa2 100644
--- a/src/main/resources/en.yml
+++ b/src/main/resources/en.yml
@@ -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:
- "Completely remove your disguise."
+ favorites:
+ name: "Favorites"
+ lore:
+ - "List all your favorites appearances."
admin:
manage_cache:
name: "Manage the skin cache..."
diff --git a/src/main/resources/fr.yml b/src/main/resources/fr.yml
index 0f6c57f..c98d408 100644
--- a/src/main/resources/fr.yml
+++ b/src/main/resources/fr.yml
@@ -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:
- "Supprime complètement votre déguisement."
+ favorites:
+ name: "Favoris"
+ lore:
+ - "Listez toutes vos apparences favorites."
admin:
manage_cache:
name: "Gérer le cache de skin..."