feat: seperate menu for appearance management

This commit is contained in:
aro 2023-01-11 18:13:19 +01:00
parent 866d5c5bc1
commit a674edc187
9 changed files with 82 additions and 15 deletions

View file

@ -0,0 +1,38 @@
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 net.artelnatif.nicko.gui.items.skin.ChangeNameAndSkinItem;
import net.artelnatif.nicko.gui.items.skin.ChangeNameItem;
import net.artelnatif.nicko.gui.items.skin.ChangeSkinItem;
import org.bukkit.entity.Player;
public class AppearanceGUI {
private final Player player;
private final GUI gui;
private final String[] structureIngredients = new String[]{
"# # # # # # # # #",
"# % % % % % % % #",
"# % # N A S # % #",
"# % % % % % % % #",
"B # # # # # # # #"};
public AppearanceGUI(Player player) {
this.gui = new GUIBuilder<>(GUIType.NORMAL)
.setStructure(new Structure(structureIngredients))
.addIngredient('N', new ChangeNameItem())
.addIngredient('A', new ChangeNameAndSkinItem())
.addIngredient('S', new ChangeSkinItem())
.addIngredient('B', new BackItem(new MainGUI(player).getGUI()))
.build();
this.player = player;
}
public void open() {
new SimpleWindow(player, "Nicko", gui).show();
}
}

View file

@ -5,7 +5,10 @@ import de.studiocode.invui.gui.builder.GUIBuilder;
import de.studiocode.invui.gui.builder.guitype.GUIType; import de.studiocode.invui.gui.builder.guitype.GUIType;
import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.gui.structure.Structure;
import de.studiocode.invui.window.impl.single.SimpleWindow; import de.studiocode.invui.window.impl.single.SimpleWindow;
import net.artelnatif.nicko.gui.items.main.*; import net.artelnatif.nicko.gui.items.main.AdminItem;
import net.artelnatif.nicko.gui.items.main.ResetItem;
import net.artelnatif.nicko.gui.items.main.SettingsItem;
import net.artelnatif.nicko.gui.items.main.SkinItem;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class MainGUI { public class MainGUI {
@ -14,10 +17,9 @@ public class MainGUI {
private final String[] structureIngredients = new String[]{ private final String[] structureIngredients = new String[]{
"# # # # # # # # #", "# # # # # # # # #",
"# % % % % % % % #", "# % % % % % % % #",
"# % # R B P # % #", "# % # R S P # % #",
"# % # N A S # % #",
"# % % % % % % % #", "# % % % % % % % #",
"E # # # # # # # #"}; "E A # # # # # # #"};
public MainGUI(Player player) { public MainGUI(Player player) {
if (!player.hasPermission("nicko.admin") || !player.isOp()) { if (!player.hasPermission("nicko.admin") || !player.isOp()) {
@ -26,12 +28,10 @@ public class MainGUI {
this.gui = new GUIBuilder<>(GUIType.NORMAL) this.gui = new GUIBuilder<>(GUIType.NORMAL)
.setStructure(new Structure(structureIngredients)) .setStructure(new Structure(structureIngredients))
.addIngredient('N', new ChangeNameItem()) .addIngredient('R', new ResetItem())
.addIngredient('S', new ChangeSkinItem()) .addIngredient('S', new SkinItem())
.addIngredient('P', new SettingsItem()) .addIngredient('P', new SettingsItem())
.addIngredient('A', new AdminItem()) .addIngredient('A', new AdminItem())
.addIngredient('B', new ChangeNameAndSkinItem())
.addIngredient('R', new ResetItem())
.build(); .build();
this.player = player; this.player = player;
} }

View file

@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull;
public class AdminItem 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.REDSTONE_TORCH);
builder.setDisplayName("§cAdministration panel..."); builder.setDisplayName("§cAdministration panel...");
builder.addLoreLines("§7Access the administration panel."); builder.addLoreLines("§7Access the administration panel.");
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.AppearanceGUI;
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 SkinItem extends BaseItem {
@Override
public ItemProvider getItemProvider() {
final ItemBuilder builder = new ItemBuilder(Material.ENDER_EYE);
builder.setDisplayName("§fManage §6appearance§f...");
builder.addLoreLines("§7Access the appearance manager.");
return builder;
}
@Override
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
if (clickType.isLeftClick() || clickType.isRightClick()) {
event.getView().close();
new AppearanceGUI(player).open();
}
}
}

View file

@ -1,4 +1,4 @@
package net.artelnatif.nicko.gui.items.main; package net.artelnatif.nicko.gui.items.skin;
import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.ItemProvider;
import de.studiocode.invui.item.builder.ItemBuilder; import de.studiocode.invui.item.builder.ItemBuilder;

View file

@ -1,4 +1,4 @@
package net.artelnatif.nicko.gui.items.main; package net.artelnatif.nicko.gui.items.skin;
import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.ItemProvider;
import de.studiocode.invui.item.builder.ItemBuilder; import de.studiocode.invui.item.builder.ItemBuilder;

View file

@ -1,4 +1,4 @@
package net.artelnatif.nicko.gui.items.main; package net.artelnatif.nicko.gui.items.skin;
import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.ItemProvider;
import de.studiocode.invui.item.builder.ItemBuilder; import de.studiocode.invui.item.builder.ItemBuilder;

View file

@ -53,7 +53,7 @@ public class I18N {
if (locale == Locale.CUSTOM) { if (locale == Locale.CUSTOM) {
translation = instance.getLocaleFileManager().getFromFile(key.key()); translation = instance.getLocaleFileManager().getFromFile(key.key());
} else { } else {
final HashMap<String, String> values = yaml.load(I18N.class.getResourceAsStream(locale.getCode() + ".yml")); final HashMap<String, String> values = yaml.load(instance.getResource(locale.getCode() + ".yml"));
translation = values.getOrDefault(key.key(), key.key()); translation = values.getOrDefault(key.key(), key.key());
} }

View file

@ -14,7 +14,7 @@ public class LocaleFileManager {
private HashMap<String, String> data = new HashMap<>(); private HashMap<String, String> data = new HashMap<>();
public boolean loadValues() { public boolean loadValues() {
if (!file.exists()) return false; if (!file.exists()) return true;
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file))) { try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
data = yaml.load(inputStream); data = yaml.load(inputStream);
return true; return true;
@ -31,7 +31,7 @@ public class LocaleFileManager {
public boolean dumpFromLocale(Locale locale) { public boolean dumpFromLocale(Locale locale) {
if (locale == Locale.CUSTOM) return true; if (locale == Locale.CUSTOM) return true;
if (file.exists()) return true; if (file.exists()) return true;
final HashMap<String, String> values = yaml.load(this.getClass().getResourceAsStream(locale.getCode() + ".yml")); final HashMap<String, String> values = yaml.load(this.getClass().getClassLoader().getResourceAsStream(locale.getCode() + ".yml"));
try { try {
if (file.createNewFile()) { if (file.createNewFile()) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {