feat: gui base
This commit is contained in:
parent
acc50e55cd
commit
9890c6b1a7
7 changed files with 195 additions and 1 deletions
|
@ -5,16 +5,19 @@ import net.artelnatif.nicko.command.sub.NickoCheckSubCmd;
|
|||
import net.artelnatif.nicko.command.sub.NickoDebugSubCmd;
|
||||
import net.artelnatif.nicko.command.sub.NickoDisguiseSubCmd;
|
||||
import net.artelnatif.nicko.command.sub.NickoGUISubCmd;
|
||||
import net.artelnatif.nicko.gui.MainGUI;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class NickoCommand implements CommandExecutor {
|
||||
private final String opPrefix = "§c(OP)";
|
||||
private String helpMessage = """
|
||||
§cNicko §8§o[{version}] §f- §2Help:
|
||||
§6/nicko §f- §7Open the GUI.
|
||||
§6/nicko disguise §f- §7Change your appearance.
|
||||
§6/nicko revert §f- §7Revert your appearance to your default skin and name.
|
||||
§6/nicko help §f- §7Prints this help message.
|
||||
|
@ -36,7 +39,13 @@ public class NickoCommand implements CommandExecutor {
|
|||
default -> sendHelpMessages(sender);
|
||||
}
|
||||
} else {
|
||||
sendHelpMessages(sender);
|
||||
if (sender instanceof Player player) {
|
||||
new MainGUI(player).open();
|
||||
return false;
|
||||
}
|
||||
|
||||
sender.sendMessage("The GUI can only be opened in-game.");
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
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.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.SimpleItem;
|
||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||
import net.artelnatif.nicko.gui.items.*;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class MainGUI {
|
||||
private final Player player;
|
||||
private final GUI gui;
|
||||
private String[] structureIngredients = new String[]{"# # # # # # # # #",
|
||||
"# % % % % % % % #",
|
||||
"# % # # B # # % #",
|
||||
"# % # N A S # % #",
|
||||
"# % % % % % % % #",
|
||||
"E # # # # # # # #"};
|
||||
|
||||
public MainGUI(Player player) {
|
||||
if (!player.hasPermission("nicko.admin") || !player.isOp()) {
|
||||
structureIngredients[3] = structureIngredients[3].replace("A", "#");
|
||||
}
|
||||
|
||||
this.gui = new GUIBuilder<>(GUIType.NORMAL)
|
||||
.setStructure(new Structure(structureIngredients))
|
||||
.addIngredient('#', new SimpleItem(new ItemBuilder(Material.BLACK_STAINED_GLASS_PANE)))
|
||||
.addIngredient('%', new SimpleItem(new ItemBuilder(Material.ORANGE_STAINED_GLASS_PANE)))
|
||||
.addIngredient('E', new ExitDoorItem())
|
||||
.addIngredient('N', new ChangeNameItem())
|
||||
.addIngredient('S', new ChangeSkinItem())
|
||||
.addIngredient('A', new AdminPanelAccessItem())
|
||||
.addIngredient('B', new ChangeNameAndSkinItem())
|
||||
.build();
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public void open() {
|
||||
new SimpleWindow(player, "Nicko", gui).show();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package net.artelnatif.nicko.gui.items;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
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 AdminPanelAccessItem extends BaseItem {
|
||||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.PISTON);
|
||||
builder.setDisplayName("§cAdministration panel");
|
||||
builder.addLoreLines("§7Access the administration panel.");
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package net.artelnatif.nicko.gui.items;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
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 ChangeNameAndSkinItem extends BaseItem {
|
||||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.WRITABLE_BOOK);
|
||||
builder.setDisplayName("§6Skin §fand §6name §fchange");
|
||||
builder.addLoreLines("§7Change both your skin and name.");
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
event.getView().close();
|
||||
final AnvilManager manager = new AnvilManager(player);
|
||||
manager.openNameAndSkinAnvil();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package net.artelnatif.nicko.gui.items;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
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 ChangeNameItem extends BaseItem {
|
||||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.NAME_TAG);
|
||||
builder.setDisplayName("§6Name §fchange");
|
||||
builder.addLoreLines("§7Only change your name.");
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
event.getView().close();
|
||||
final AnvilManager manager = new AnvilManager(player);
|
||||
manager.openNameAnvil();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
package net.artelnatif.nicko.gui.items;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
import net.artelnatif.nicko.anvil.AnvilManager;
|
||||
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 ChangeSkinItem extends BaseItem {
|
||||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
final ItemBuilder builder = new ItemBuilder(Material.PAINTING);
|
||||
builder.setDisplayName("§6Skin §fchange");
|
||||
builder.addLoreLines("§7Only change your skin.");
|
||||
return builder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||
if(clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
event.getView().close();
|
||||
final AnvilManager manager = new AnvilManager(player);
|
||||
manager.openSkinAnvil();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package net.artelnatif.nicko.gui.items;
|
||||
|
||||
import de.studiocode.invui.item.ItemProvider;
|
||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||
import de.studiocode.invui.item.impl.BaseItem;
|
||||
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 ExitDoorItem extends BaseItem {
|
||||
@Override
|
||||
public ItemProvider getItemProvider() {
|
||||
return new ItemBuilder(Material.OAK_DOOR).setDisplayName("§fExit");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||
event.getView().close();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue