forked from fzorb/noThankYouMicrosoft
add chestgui
This commit is contained in:
parent
3943c3d239
commit
a80fb99bdc
5 changed files with 113 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue