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.structure.Structure;
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;
public class MainGUI {
@ -14,10 +17,9 @@ public class MainGUI {
private final String[] structureIngredients = new String[]{
"# # # # # # # # #",
"# % % % % % % % #",
"# % # R B P # % #",
"# % # N A S # % #",
"# % # R S P # % #",
"# % % % % % % % #",
"E # # # # # # # #"};
"E A # # # # # # #"};
public MainGUI(Player player) {
if (!player.hasPermission("nicko.admin") || !player.isOp()) {
@ -26,12 +28,10 @@ public class MainGUI {
this.gui = new GUIBuilder<>(GUIType.NORMAL)
.setStructure(new Structure(structureIngredients))
.addIngredient('N', new ChangeNameItem())
.addIngredient('S', new ChangeSkinItem())
.addIngredient('R', new ResetItem())
.addIngredient('S', new SkinItem())
.addIngredient('P', new SettingsItem())
.addIngredient('A', new AdminItem())
.addIngredient('B', new ChangeNameAndSkinItem())
.addIngredient('R', new ResetItem())
.build();
this.player = player;
}

View file

@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull;
public class AdminItem extends BaseItem {
@Override
public ItemProvider getItemProvider() {
final ItemBuilder builder = new ItemBuilder(Material.PISTON);
final ItemBuilder builder = new ItemBuilder(Material.REDSTONE_TORCH);
builder.setDisplayName("§cAdministration panel...");
builder.addLoreLines("§7Access the administration panel.");
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.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.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.builder.ItemBuilder;

View file

@ -53,7 +53,7 @@ public class I18N {
if (locale == Locale.CUSTOM) {
translation = instance.getLocaleFileManager().getFromFile(key.key());
} 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());
}

View file

@ -14,7 +14,7 @@ public class LocaleFileManager {
private HashMap<String, String> data = new HashMap<>();
public boolean loadValues() {
if (!file.exists()) return false;
if (!file.exists()) return true;
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
data = yaml.load(inputStream);
return true;
@ -31,7 +31,7 @@ public class LocaleFileManager {
public boolean dumpFromLocale(Locale locale) {
if (locale == Locale.CUSTOM) 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 {
if (file.createNewFile()) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {