Skip to content

Commit

Permalink
✅ added option to customize button names, and disable favourites, sea…
Browse files Browse the repository at this point in the history
…rch and custom category items in main menu

Took 40 minutes
  • Loading branch information
kiranhart committed Dec 14, 2023
1 parent a37c276 commit 2428c94
Show file tree
Hide file tree
Showing 10 changed files with 175 additions and 23 deletions.
4 changes: 2 additions & 2 deletions src/main/java/ca/tweetzy/skulls/guis/CategorySelectorGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@

import ca.tweetzy.flight.comp.enums.CompMaterial;
import ca.tweetzy.flight.gui.events.GuiClickEvent;
import ca.tweetzy.flight.gui.template.PagedGUI;
import ca.tweetzy.flight.settings.TranslationManager;
import ca.tweetzy.flight.utils.QuickItem;
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.interfaces.Category;
import ca.tweetzy.skulls.guis.abstraction.SkullsPagedGUI;
import ca.tweetzy.skulls.settings.Translations;
import org.bukkit.inventory.ItemStack;

Expand All @@ -36,7 +36,7 @@
*
* @author Kiran Hart
*/
public final class CategorySelectorGUI extends PagedGUI<Category> {
public final class CategorySelectorGUI extends SkullsPagedGUI<Category> {

private final Consumer<Category> selected;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.enums.ViewMode;
import ca.tweetzy.skulls.api.interfaces.Category;
import ca.tweetzy.skulls.guis.abstraction.SkullsPagedGUI;
import ca.tweetzy.skulls.impl.SkullCategory;
import ca.tweetzy.skulls.settings.Settings;
import ca.tweetzy.skulls.settings.Translations;
Expand All @@ -44,7 +45,7 @@
*
* @author Kiran Hart
*/
public final class CustomCategoryListGUI extends PagedGUI<Category> {
public final class CustomCategoryListGUI extends SkullsPagedGUI<Category> {

private final Player viewer;

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/ca/tweetzy/skulls/guis/HistoryViewGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.enums.BaseCategory;
import ca.tweetzy.skulls.api.interfaces.History;
import ca.tweetzy.skulls.guis.abstraction.SkullsPagedGUI;
import ca.tweetzy.skulls.settings.Translations;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack;
Expand All @@ -42,7 +43,7 @@
*
* @author Kiran Hart
*/
public final class HistoryViewGUI extends PagedGUI<History> {
public final class HistoryViewGUI extends SkullsPagedGUI<History> {

public HistoryViewGUI(Gui parent) {
super(parent, TranslationManager.string(Translations.GUI_HISTORIES_TITLE), 6, Skulls.getSkullManager().getHistories());
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/ca/tweetzy/skulls/guis/MainGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.enums.BaseCategory;
import ca.tweetzy.skulls.api.enums.ViewMode;
import ca.tweetzy.skulls.guis.abstraction.SkullsBaseGUI;
import ca.tweetzy.skulls.model.SkullItem;
import ca.tweetzy.skulls.settings.Settings;
import ca.tweetzy.skulls.settings.Translations;
Expand All @@ -40,7 +41,7 @@
*
* @author Kiran Hart
*/
public final class MainGUI extends BaseGUI {
public final class MainGUI extends SkullsBaseGUI {

private final Player player;

Expand Down Expand Up @@ -71,7 +72,7 @@ protected void draw() {
});
}

setButton(4, 4, QuickItem.of(SkullItem.get("skulls:5650"))
setButton(Settings.GUI_MAIN_ITEMS_SEARCH_SLOT.getInt(), QuickItem.of(SkullItem.get("skulls:5650"))
.name(TranslationManager.string(Translations.GUI_MAIN_ITEMS_SEARCH_NAME))
.lore(TranslationManager.list(Translations.GUI_MAIN_ITEMS_SEARCH_LORE))
.make(), click -> {
Expand All @@ -94,12 +95,12 @@ public boolean onResult(String string) {

});

setButton(4, 2, QuickItem.of(SkullItem.get("skulls:25001"))
setButton(Settings.GUI_MAIN_ITEMS_CUSTOM_CATEGORIES_SLOT.getInt(), QuickItem.of(SkullItem.get("skulls:25001"))
.name(TranslationManager.string(Translations.GUI_MAIN_ITEMS_CUSTOM_CATEGORIES_NAME))
.lore(TranslationManager.list(Translations.GUI_MAIN_ITEMS_CUSTOM_CATEGORIES_LORE))
.make(), click -> click.manager.showGUI(click.player, new CustomCategoryListGUI(click.player, this)));

setButton(4, 6, QuickItem.of(SkullItem.get("skulls:39696"))
setButton(Settings.GUI_MAIN_ITEMS_FAVOURITES_SLOT.getInt(), QuickItem.of(SkullItem.get("skulls:39696"))
.name(TranslationManager.string(Translations.GUI_MAIN_ITEMS_FAVOURITES_NAME))
.lore(TranslationManager.list(Translations.GUI_MAIN_ITEMS_FAVOURITES_LORE))
.make(), click -> {
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/ca/tweetzy/skulls/guis/SkullEditGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import ca.tweetzy.flight.utils.input.TitleInput;
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.interfaces.Skull;
import ca.tweetzy.skulls.guis.abstraction.SkullsBaseGUI;
import ca.tweetzy.skulls.settings.Translations;
import org.apache.commons.lang.math.NumberUtils;

Expand All @@ -36,7 +37,7 @@
*
* @author Kiran Hart
*/
public final class SkullEditGUI extends BaseGUI {
public final class SkullEditGUI extends SkullsBaseGUI {

private final Gui parent;
private final Skull skull;
Expand Down
16 changes: 2 additions & 14 deletions src/main/java/ca/tweetzy/skulls/guis/SkullsViewGUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@
import ca.tweetzy.flight.gui.template.PagedGUI;
import ca.tweetzy.flight.settings.TranslationManager;
import ca.tweetzy.flight.utils.Common;
import ca.tweetzy.flight.utils.PlayerUtil;
import ca.tweetzy.flight.utils.QuickItem;
import ca.tweetzy.skulls.Skulls;
import ca.tweetzy.skulls.api.enums.ViewMode;
import ca.tweetzy.skulls.api.interfaces.Skull;
import ca.tweetzy.skulls.api.interfaces.SkullUser;
import ca.tweetzy.skulls.guis.abstraction.SkullsPagedGUI;
import ca.tweetzy.skulls.settings.Settings;
import ca.tweetzy.skulls.settings.Translations;
import org.bukkit.Bukkit;
Expand All @@ -43,7 +43,7 @@
*
* @author Kiran Hart
*/
public final class SkullsViewGUI extends PagedGUI<Skull> {
public final class SkullsViewGUI extends SkullsPagedGUI<Skull> {

private final Player player;
private final SkullUser skullPlayer;
Expand Down Expand Up @@ -144,16 +144,4 @@ protected void onClick(Skull skull, GuiClickEvent event) {
event.manager.showGUI(player, new SkullEditGUI(this, skull, this.page));
}
}

@Override
protected void handleTitle() {
// setTitle(Replacer.replaceVariables(getTitle(this.viewMode, this.category), "current_page", this.page, "total_pages", this.pages));
}

private String getTitle(ViewMode viewMode, String category) {
return viewMode == ViewMode.SEARCH ?
TranslationManager.string(Translations.GUI_SKULLS_LIST_TITLE_SEARCH, "search_phrase", category)
: viewMode == ViewMode.FAVOURITE ? TranslationManager.string(Translations.GUI_SKULLS_LIST_TITLE_FAVOURITES)
: TranslationManager.string(Translations.GUI_SKULLS_LIST_TITLE_CATEGORY, "category_name", category);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*
* Skulls
* Copyright 2023 Kiran Hart
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package ca.tweetzy.skulls.guis.abstraction;

import ca.tweetzy.flight.comp.enums.CompMaterial;
import ca.tweetzy.flight.gui.Gui;
import ca.tweetzy.flight.gui.template.BaseGUI;
import ca.tweetzy.flight.settings.TranslationManager;
import ca.tweetzy.flight.utils.QuickItem;
import ca.tweetzy.skulls.settings.Translations;
import lombok.NonNull;
import org.bukkit.inventory.ItemStack;

public abstract class SkullsBaseGUI extends BaseGUI {
public SkullsBaseGUI(Gui parent, @NonNull String title, int rows) {
super(parent, title, rows);
}

public SkullsBaseGUI(Gui parent, @NonNull String title) {
super(parent, title);
}

public SkullsBaseGUI(@NonNull String title) {
super(title);
}

@Override
protected ItemStack getBackButton() {
return QuickItem.of(CompMaterial.DARK_OAK_DOOR).name(TranslationManager.string(Translations.GUI_BTN_BACK_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_BACK_LORE)).make();
}

@Override
protected ItemStack getExitButton() {
return QuickItem.of(CompMaterial.BARRIER).name(TranslationManager.string(Translations.GUI_BTN_EXIT_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_EXIT_LORE)).make();
}

@Override
protected ItemStack getPreviousButton() {
return QuickItem.of(CompMaterial.ARROW).name(TranslationManager.string(Translations.GUI_BTN_PREV_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_PREV_LORE)).make();
}

@Override
protected ItemStack getNextButton() {
return QuickItem.of(CompMaterial.ARROW).name(TranslationManager.string(Translations.GUI_BTN_NEXT_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_NEXT_LORE)).make();
}

@Override
protected int getPreviousButtonSlot() {
return 49;
}

@Override
protected int getNextButtonSlot() {
return 50;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* Skulls
* Copyright 2023 Kiran Hart
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

package ca.tweetzy.skulls.guis.abstraction;

import ca.tweetzy.flight.comp.enums.CompMaterial;
import ca.tweetzy.flight.gui.Gui;
import ca.tweetzy.flight.gui.template.PagedGUI;
import ca.tweetzy.flight.settings.TranslationManager;
import ca.tweetzy.flight.utils.QuickItem;
import ca.tweetzy.skulls.settings.Translations;
import lombok.NonNull;
import org.bukkit.inventory.ItemStack;

import java.util.List;

public abstract class SkullsPagedGUI<T> extends PagedGUI<T> {

public SkullsPagedGUI(Gui parent, @NonNull String title, int rows, @NonNull List<T> items) {
super(parent, title, rows, items);
}

public SkullsPagedGUI(@NonNull String title, int rows, @NonNull List<T> items) {
super(title, rows, items);
}

@Override
protected ItemStack getBackButton() {
return QuickItem.of(CompMaterial.DARK_OAK_DOOR).name(TranslationManager.string(Translations.GUI_BTN_BACK_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_BACK_LORE)).make();
}

@Override
protected ItemStack getExitButton() {
return QuickItem.of(CompMaterial.BARRIER).name(TranslationManager.string(Translations.GUI_BTN_EXIT_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_EXIT_LORE)).make();
}

@Override
protected ItemStack getPreviousButton() {
return QuickItem.of(CompMaterial.ARROW).name(TranslationManager.string(Translations.GUI_BTN_PREV_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_PREV_LORE)).make();
}

@Override
protected ItemStack getNextButton() {
return QuickItem.of(CompMaterial.ARROW).name(TranslationManager.string(Translations.GUI_BTN_NEXT_NAME)).lore(TranslationManager.list(Translations.GUI_BTN_NEXT_LORE)).make();
}

@Override
protected int getPreviousButtonSlot() {
return 49;
}

@Override
protected int getNextButtonSlot() {
return 50;
}
}
6 changes: 6 additions & 0 deletions src/main/java/ca/tweetzy/skulls/settings/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ public final class Settings extends FlightSettings {
/*
==================== GUI END ====================
*/

public static final ConfigEntry GUI_MAIN_ITEMS_FAVOURITES_SLOT = create("gui.main.items.favourites.slot", 42, "-1 to disable it");
public static final ConfigEntry GUI_MAIN_ITEMS_SEARCH_SLOT = create("gui.main.items.search.slot", 40, "-1 to disable it");
public static final ConfigEntry GUI_MAIN_ITEMS_CUSTOM_CATEGORIES_SLOT = create("gui.main.items.custom categories.slot", 38, "-1 to disable it");


public static final ConfigEntry GUI_MAIN_ITEMS_ALPHABET_SLOT = create("gui.main.items.alphabet.slot", 11);
public static final ConfigEntry GUI_MAIN_ITEMS_ANIMALS_SLOT = create("gui.main.items.animals.slot", 12);
public static final ConfigEntry GUI_MAIN_ITEMS_BLOCKS_SLOT = create("gui.main.items.blocks.slot", 13);
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/ca/tweetzy/skulls/settings/Translations.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,17 @@ public Translations(@NonNull JavaPlugin plugin) {
);

// GUIS
public static final TranslationEntry GUI_BTN_BACK_NAME = create("gui.buttons.back.name", "&aBack");
public static final TranslationEntry GUI_BTN_BACK_LORE = create("gui.buttons.back.lore", "&7Click to go back");
public static final TranslationEntry GUI_BTN_EXIT_NAME = create("gui.buttons.exit.name", "&cExit");
public static final TranslationEntry GUI_BTN_EXIT_LORE = create("gui.buttons.exit.lore", "&7Click to close menu");

public static final TranslationEntry GUI_BTN_PREV_NAME = create("gui.buttons.previous.name", "&ePrevious");
public static final TranslationEntry GUI_BTN_PREV_LORE = create("gui.buttons.previous.lore", "&7Click to go back a page");
public static final TranslationEntry GUI_BTN_NEXT_NAME = create("gui.buttons.next.name", "&eNext");
public static final TranslationEntry GUI_BTN_NEXT_LORE = create("gui.buttons.next.lore", "&7Click to next page");


public static final TranslationEntry GUI_HISTORIES_TITLE = create("gui.histories.title", "&eSkulls &8> &7Histories");

public static final TranslationEntry GUI_HISTORIES_ITEMS_HISTORY_NAME = create("gui.histories.items.history.name", "&e%history_id%");
Expand Down

0 comments on commit 2428c94

Please sign in to comment.