add chestgui

This commit is contained in:
fzorb 2025-07-21 22:04:19 +03:00
parent 3943c3d239
commit a80fb99bdc
5 changed files with 113 additions and 1 deletions

View file

@ -4,6 +4,8 @@ import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;
import xyz.fzorb.noThankYouMicrosoft.flagFrontend.menuEvents;
import xyz.fzorb.noThankYouMicrosoft.flagFrontend.prideCommand;
import java.io.File;
import java.io.IOException;
@ -20,6 +22,8 @@ public final class NoThankYouMicrosoft extends JavaPlugin {
this.saveDefaultConfig();
createDatabaseConfig();
this.getServer().getPluginManager().registerEvents(new messageListener(), this);
this.getServer().getPluginManager().registerEvents(new menuEvents(), this);
this.getCommand("pride").setExecutor(new prideCommand());
}
private void createDatabaseConfig() {
@ -47,6 +51,15 @@ public final class NoThankYouMicrosoft extends JavaPlugin {
}
}
public static void saveDatabase(JavaPlugin instance) {
File databaseFile = new File(instance.getDataFolder(), "database.yml");
try {
databaseFileConfig.save(databaseFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public static JavaPlugin getInstance() {
return instance;
}

View file

@ -0,0 +1,22 @@
package xyz.fzorb.noThankYouMicrosoft.flagFrontend;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import xyz.fzorb.noThankYouMicrosoft.flagManager;
public class menuEvents implements Listener {
@EventHandler
public static void onPlayerInteractWithChestGUI(InventoryClickEvent event) {
if (event.getInventory().equals(prideMenu.prideMenus.get(event.getWhoClicked().getUniqueId()))) {
event.setCancelled(true);
event.getInventory().close();
prideMenu.prideMenus.remove(event.getWhoClicked().getUniqueId());
ItemStack item = event.getCurrentItem();
String pride = PlainTextComponentSerializer.plainText().serialize(item.getItemMeta().displayName());
flagManager.setUserPride(event.getWhoClicked().getUniqueId(), pride);
}
}
}

View file

@ -0,0 +1,18 @@
package xyz.fzorb.noThankYouMicrosoft.flagFrontend;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import xyz.fzorb.noThankYouMicrosoft.flagManager;
public class prideCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) { return true; }
prideMenu.prideMenus.put(((Player) sender).getUniqueId(), prideMenu.generatePrideMenu());
((Player) sender).openInventory(prideMenu.prideMenus.get(((Player) sender).getUniqueId()));
return true;
}
}

View file

@ -0,0 +1,52 @@
package xyz.fzorb.noThankYouMicrosoft.flagFrontend;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import xyz.fzorb.noThankYouMicrosoft.NoThankYouMicrosoft;
import java.util.*;
public class prideMenu {
public static final Map<UUID, Inventory> prideMenus = new HashMap<>();
public static Integer calculateRows(Integer number) {
if (number <= 9) { return 9; }
else if (number <= 18) { return 18; }
else if (number <= 27) { return 27; }
else if (number <= 36) { return 36; }
else if (number <= 45) { return 45; }
else if (number <= 54) { return 54; }
return 0; // this can NEVER be the case, can it? who am I kidding, I DOUBT there will ever be more than 54 flags!
}
public static ItemStack generatePrideItem(String pride) {
ItemStack is = new ItemStack(Material.PAPER, 1);
ItemMeta im = is.getItemMeta();
im.displayName(MiniMessage.miniMessage().deserialize("<pride:" + pride + ">" + pride + "</pride>"));
is.setItemMeta(im);
return is;
}
public static ItemStack generateNoPrideItem() {
ItemStack is = new ItemStack(Material.BARRIER, 1);
ItemMeta im = is.getItemMeta();
im.displayName(MiniMessage.miniMessage().deserialize("<red>none</red>"));
is.setItemMeta(im);
return is;
}
public static Inventory generatePrideMenu() {
List<String> prides = NoThankYouMicrosoft.getInstance().getConfig().getStringList("prides");
Inventory inventory = Bukkit.createInventory(null, calculateRows(prides.toArray().length + 1), MiniMessage.miniMessage().deserialize("<pride>Choose your flag</pride>"));
for (String pride : prides) {
inventory.addItem(generatePrideItem(pride));
}
inventory.addItem(generateNoPrideItem());
return inventory;
}
}

View file

@ -4,11 +4,18 @@ import java.util.UUID;
public class flagManager {
public static String getUserPride(UUID uuid) {
String pride = NoThankYouMicrosoft.getDatabase().getString("player.%s.flag".formatted(uuid.toString()));
NoThankYouMicrosoft.reReadDatabase(NoThankYouMicrosoft.getInstance());
String pride = NoThankYouMicrosoft.getDatabase().getString("players.%s.flag".formatted(uuid.toString()));
if (pride == null) {
return "none";
} else {
return pride;
}
}
public static void setUserPride(UUID uuid, String pride) {
NoThankYouMicrosoft.reReadDatabase(NoThankYouMicrosoft.getInstance());
NoThankYouMicrosoft.getDatabase().set("players.%s.flag".formatted(uuid.toString()), pride);
NoThankYouMicrosoft.saveDatabase(NoThankYouMicrosoft.getInstance());
}
}