feat: settings gui

This commit is contained in:
aro 2022-12-05 16:14:40 +01:00
parent 8e024c2edf
commit 159d0209fb
5 changed files with 64 additions and 5 deletions

View file

@ -14,10 +14,10 @@ public class MainGUI {
private final String[] structureIngredients = new String[] private final String[] structureIngredients = new String[]
{"# # # # # # # # #", {"# # # # # # # # #",
"# % % % % % % % #", "# % % % % % % % #",
"# % # R B # # % #", "# % # R B P # % #",
"# % # N A S # % #", "# % # N A S # % #",
"# % % % % % % % #", "# % % % % % % % #",
"E # # # # # # # #"}; "E # # # # # # # P"};
public MainGUI(Player player) { public MainGUI(Player player) {
if (!player.hasPermission("nicko.admin") || !player.isOp()) { if (!player.hasPermission("nicko.admin") || !player.isOp()) {
@ -29,7 +29,8 @@ public class MainGUI {
.addIngredient('E', new ExitDoorItem()) .addIngredient('E', new ExitDoorItem())
.addIngredient('N', new ChangeNameItem()) .addIngredient('N', new ChangeNameItem())
.addIngredient('S', new ChangeSkinItem()) .addIngredient('S', new ChangeSkinItem())
.addIngredient('A', new AdminPanelAccessItem()) .addIngredient('P', new SettingsItem())
.addIngredient('A', new AdminItem())
.addIngredient('B', new ChangeNameAndSkinItem()) .addIngredient('B', new ChangeNameAndSkinItem())
.addIngredient('R', new ResetItem()) .addIngredient('R', new ResetItem())
.build(); .build();

View file

@ -0,0 +1,29 @@
package net.artelnatif.nicko.gui;
import de.studiocode.invui.gui.GUI;
import de.studiocode.invui.gui.builder.GUIBuilder;
import de.studiocode.invui.gui.builder.guitype.GUIType;
import de.studiocode.invui.gui.structure.Structure;
import de.studiocode.invui.window.impl.single.SimpleWindow;
import net.artelnatif.nicko.gui.items.common.BackItem;
import org.bukkit.entity.Player;
public class SettingsGUI {
private final Player player;
private final GUI gui;
public SettingsGUI(Player player) {
final Structure structure = new Structure("# # # # # # # # #",
"# % % M C R % % #",
"B # # # # # # # #");
structure.addIngredient('B', new BackItem(new MainGUI(player).getGUI()));
this.gui = new GUIBuilder<>(GUIType.NORMAL)
.setStructure(structure)
.build();
this.player = player;
}
public void open() {
new SimpleWindow(player, "Nicko", gui).show();
}
}

View file

@ -10,7 +10,7 @@ import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
public class AdminPanelAccessItem extends BaseItem { public class AdminItem extends BaseItem {
@Override @Override
public ItemProvider getItemProvider() { public ItemProvider getItemProvider() {
final ItemBuilder builder = new ItemBuilder(Material.PISTON); final ItemBuilder builder = new ItemBuilder(Material.PISTON);

View file

@ -16,7 +16,7 @@ public class ResetItem extends BaseItem {
@Override @Override
public ItemProvider getItemProvider() { public ItemProvider getItemProvider() {
final ItemBuilder builder = new ItemBuilder(Material.TNT); final ItemBuilder builder = new ItemBuilder(Material.TNT);
builder.setDisplayName("§6Reset"); builder.setDisplayName("§fReset");
builder.addLoreLines("§7Removes your disguise."); builder.addLoreLines("§7Removes your disguise.");
return builder; return builder;
} }

View file

@ -0,0 +1,29 @@
package net.artelnatif.nicko.gui.items.main;
import de.studiocode.invui.item.ItemProvider;
import de.studiocode.invui.item.builder.ItemBuilder;
import de.studiocode.invui.item.impl.BaseItem;
import net.artelnatif.nicko.gui.SettingsGUI;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull;
public class SettingsItem extends BaseItem {
@Override
public ItemProvider getItemProvider() {
final ItemBuilder builder = new ItemBuilder(Material.COMPARATOR);
builder.setDisplayName("§fSettings...");
builder.addLoreLines("§7Adjust your preferences.");
return builder;
}
@Override
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
if (clickType.isLeftClick() || clickType.isRightClick()) {
event.getView().close();
new SettingsGUI(player).open();
}
}
}